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


  • cephei cephei
    Padawan
    0 x
    40 Beiträge
    1 Hilfreiche Beiträge
    02. 08. 2013, 00:32

    Zitiert von: harald1972

    Allerdings übergibst du der str_replace jedesmal eine Variable namens $string.
    So wie ich das verstehe, existiert diese aber noch nicht mal innerhalb der render-Methode.
    Deine render-Methode erhält zwar $abc, $xyz, tut aber nichts damit.

    Ich denke, das war nur als Beispiel gedacht und im richtigen Code sieht das dann schon valid aus...

    Ich hatte heute dasselbe Problem. Ich möchte 2 Parameter an den ViewHelper senden. Er akzeptiert aber nur einen und gibt als Fehler an, dass der andere nicht registriert sei. Wenn ich den jetzt mit der oben genannten Registrier-funktion anmelden will, kommt der Fehler, dass der Parameter nicht 2 mal registriert werden soll. Hab auch keine Lösung gefunden bisher.

    Diese Signatur ist in Ihrem Land leider nicht verfügbar.

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    02. 08. 2013, 10:28

    Wenn bei uns Fehler mit den ViewHelper-Parameter auftreten, kontrolliere ich immer:

    • Ist der Kommentar über render() korrekt gesetzt? (keine Tabs, sondern Leerzeichen, etc...)
    • Hilft auch Cache leeren nichts, kümmere ich mich um den Reflection Cache: http://blog.recent.ch/extbase-reflection-cache-wahrend-entwicklung-deaktivieren/
    • In einem Fall hatten wir nach einer ViewHelper Änderung überhaupt erst erfolg, als wir einen neuen, etwas anders lautenden ViewHelper mit gleichen Methoden erstellt hatten

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • cephei cephei
    Padawan
    0 x
    40 Beiträge
    1 Hilfreiche Beiträge
    04. 08. 2013, 17:43

    Hatte das Problem auch gerade. Bei mir hat es funktioniert, nachdem ich in der Funktionsbeschreibung den Parameter hinzugefügt habe. Da muss man bei Extbase immer ein bisschen aufpassen, das alles schön sauber in den comments steht.

    1. /**
    2.   * Makes a List of selected Days
    3.   *
    4.   * @param string $daylist
    5.   * @param boolean $crop
    6.   * @return string
    7.   * @author *** *** <***@****.**>
    8.   */
    9. public function render($daylist, $crop) {
    10. ...
    11. }

    Diese Signatur ist in Ihrem Land leider nicht verfügbar.

  • 0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    21. 10. 2014, 11:53

    Hallo,
    wenn ihr "initializeArguments()" nutzt, dann achtet darauf, dass ihr die Methode "public" macht und nicht "protected" (es gab einen Fehler in dem Tutorial: http://docs.typo3.org/typo3cms/ExtbaseFluidBook/8-Fluid/8-developing-a-custom-viewhelper.html#register-arguments-with-initializearguments
    [b]ist inzwischen aber korrigiert [url]https://github.com/TYPO3-Documentation/TYPO3CMS-Book-ExtbaseFluid/pull/8/files[/url][/b]).