Verständnisfrage Eigener ViewHelper // Ständig Fehler Argument "" was not registered.

  • brainage brainage
    T3PO
    0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    15. 06. 2013, 04:28

    Hallo,

    wenn ich einen eigenen ViewHelper schreibe dann definiere ich doch die
    Variablen im ViewHelper selbst und brauch sie nicht
    nochmal explizit registrieren oder ?

    1. /**
    2. * Formats a given Price like '10.10' to '10,10'
    3. *
    4. * @param string $string Price like 10.10
    5. * @return string Price
    6. */
    7. public function render($string) {
    8. return str_replace('.', ',', $string);
    9. }

    Das obere Beispiel funktioniert das untere nicht.
    Aber warum ?

    1. /**
    2. * Formats a given Price like '10.10' to '10,10'
    3. *
    4. * @param string $xyz Price like 10.10
    5. * @return string Price
    6. */
    7. public function render($xyz) {
    8. return str_replace('.', ',', $string);
    9. }

    und wenn ich mehrere Werte werte übergeben möchte müßte es doch so gehen oder ?

    1. /**
    2. * Formats a given Price like '10.10' to '10,10'
    3. *
    4.   * @param string $abc Price like 10.10
    5. * @param string $xyz Price2 like 10.10
    6. * @return string Price
    7. */
    8. public function render($abc,$xyz) {
    9. return str_replace('.', ',', $string);
    10. }

    oder ist es wieder so ein Baum Wald ding? auf jeden Fall bekomme ich immer
    diese Fehler Argument "" was not registered. Meldung.

    typo3 4.5 //

    danke


  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    16. 06. 2013, 10:14

    Interessant wär ja wie Du deinen ViewHelper dann jeweils benutzt. Du musst deine Arguments natürlich mit dem Namen auch übergeben.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • brainage brainage
    T3PO
    0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    16. 06. 2013, 17:44

    Hallo

    naja ich definiere den Namespace

    und übergeben die Werte

    1. <abc:format.price string='{row.price}' />

    dies funktioniert ja auch prima

    analog dazu sollte es bei den anderen Varianten so sein .. ,oder ?

    1. <abc:format.price xyz='{row.price}' />

    und

    1. <abc:format.price xyz='{row.price}' abc='{row.price2}' />

    danke

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    16. 06. 2013, 22:23

    Und du hast jeweils nach den Änderungen die Caches geleert? Das ist auch noch wichtig.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • brainage brainage
    T3PO
    0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    16. 06. 2013, 22:57

    :-) ja das habe ich getan ..mehrfach ..

    Dann gehe ich davon aus, dass du auch der Meinung bist, die anderen Varianten sollte eigentlich so laufen ?

    oder ?

    :-) danke

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    17. 06. 2013, 12:27

    Ja absolut. Klingt nach einem Problem mit den Reflection-Daten daher meine Idee mit dem Cache. Irgendwas muss schieflaufen, ich weiß nur noch nicht was. Erbst du von einem anderen ViewHelper?

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • brainage brainage
    T3PO
    0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    17. 06. 2013, 18:42

    Eigentlich nicht .. es ist eigentlich ein klizekleiner autarker viewhelper
    bzw was meinst du damit genau.. ;-) wie kann man von anderen viewhelpern erben

    danke

  • karlchen karlchen
    Jedi-General
    0 x
    1427 Beiträge
    30 Hilfreiche Beiträge
    17. 06. 2013, 22:47

    hi,

    interessante Frage, hätte bisher eigentlich angenommen das da nichts ohne initializeArguments geht

    1. public function initializeArguments() {
    2. ---
    3. $this->registerArgument('column', 'integer', 'Name of the column to render', FALSE, 0);
    4. ---
    5. }

    Bsp von [url=https://github.com/FluidTYPO3/vhs/blob/master/Classes/ViewHelpers/Content/AbstractContentViewHelper.php]hier[/url]

  • brainage brainage
    T3PO
    0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    18. 06. 2013, 00:08

    Das habe ich zu dem Thema gefunden

    [b]Argumente mit initializeArguments() registrieren

    Die Möglichkeit, Argumente des ViewHelpers direkt an der render()-Methode zu initialisieren, ist vor allem bei nicht zu vielen Argumenten extrem praktisch und intuitiv. Manchmal jedoch baut man mit ViewHelpern komplexere Vererbungshierarchien auf, wo verschiedene Ebenen der Vererbungsstruktur zusätzliche Argumente registrieren sollen. Fluid selbst macht dies z.B. bei den form-ViewHelpern.
    Da Methodenparameter und Annotations nicht vererbbar sind, muss es noch einen zusätzlichen Weg zur Registrierung der Argumente eines ViewHelpers geben. Fluid stellt hierfür die Methode initializeArguments() zur Verfügung. In dieser Methode können weitere Argumente durch den Aufruf von $this->registerArgument($name, $type, $description, $required, $defaultValue) registriert werden. Auf diese Argumente können Sie dann über das Array $this->arguments zugreifen.[/b]

    http://my.safaribooksonline.com/book/-/9783868993073/einen-eigenen-viewhelper-entwickeln/id2692786

    :-) erklärt aber nicht warum es bei mir nicht geht #angry# .. aber gut zu wissen, dass es eigentlich funktionieren sollte. wie auch kitsunet schon erwähnt hat (danke dafür :-) )daher muss ich den Fehler wo anders suchen..
    und ich hab jetzt auch nen Tipp wo ich mir ein Beispiel für ne Vererbungsstruktur ansehen kann.

    Gruß

    juhu es wird heller im kopp :-)

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    18. 06. 2013, 10:20

    Jap, registerArgument und die Method-Arguments stehen nebeneinander, entweder eins oder das andere. Eigetnlich sollte es daher klappen. Schau mal von was deine VH class erbt.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!