[Frage] ViewHelper mit mehreren Parametern [Gelöst]

  • 0 x
    64 Beiträge
    4 Hilfreiche Beiträge
    12. 02. 2014, 12:11

    Hallo alle miteinander,

    ich stehe mal wieder von einem Problem, bei dem ich Hilfe gebrauchen könnte. Mein Ziel: ich möchte einen ViewHelper erstellen, mit dem ich jedes X-beliebige Datum in ein anderes X-beliebiges Datumsformat bringen kann (das was Extbase bereits mitliefert ist zu eingeschränkt für meine Anforderung). Entsprechend benötige ich einen ViewHelper mit zwei Parametern: Datum und Format.

    Mein ViewHelper-Funktion sieht wie folgt aus:

    1. /**
    2.  * @param string $date ...
    3.  * @param string $format ...
    4.  * @return string
    5.  */
    6. public function render($date = NULL, $format = NULL) {
    7.  
    8. // inserted so the viewhelper can be used inline
    9. if ($date === NULL) {
    10. $date = $this->renderChildren();
    11. }
    12. if ($format === NULL) {
    13. $format = $this->renderChildren();
    14. }
    15. ...
    16. return $formatted_date;
    17. }

    Der Code, mit dem ich den ViewHelper aufrufe sieht so aus:

    1. {blubb: Date(date:mydate, format:'d.m.Y')}

    "mydate" wird über den Controller zugewiesen, das Format wird im Template als String übergeben.
    (Das Leerzeichen vor "Date" musste ich nur rein machen, weil es sonst hier im Forum nicht korrekt angezeigt wird...)

    [b]Mein Problem:[/b]
    1. weiß ich nicht, ob der Aufruf des ViewHelpers mit mehreren Parametern so korrekt ist. Ich finde irgendwie überall nur Beispiele für einen einzigen Parameter...
    2. Wenn ich die Seite mit diesem Aufruf anzeigen lassen, kommt folgender Fehler:
    Argument "format" was not registered.

    [b]Folgendes habe ich versucht:[/b]
    1. Wenn ich den zweiten Parameter (format) beim Aufruf weg lasse und ihn auch in meinem ViewHelper raus nehme (und das Format dort fest setze), funktioniert das wunderbar. Ich möchte das Format aber im Template setzen, weil es variabel sein soll und nicht fest im ViewHelper einbauen.
    2. Wenn ich den Parameter überall in "myformat" umbenenne, funktioniert es auch nicht (ich wollte damit ausschließen, dass es evtl. an einem reservierten Wort liegt).

    Könnt ihr mir evtl. weiter helfen?

  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    12. 02. 2014, 12:36 - Lösung

    Sieht eigentlich alles korrekt aus. Möglicherweise wird der ViewHelper schon aus dem Cache geladen und kennt "format" noch nicht.. oder wurde der Helper direkt mit beiden Parameter angelegt und erstmalig aufgerufen?
    Um Caching als Problem auszuschließen einmal den kompletten Cache löschen und ggf. die Extension einmal neu im Ext-Manager installieren. Klingt komisch, hat bei mir aber schon häufig geholfen ;)


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    12. 02. 2014, 12:36

    Sieht eigentlich alles korrekt aus. Möglicherweise wird der ViewHelper schon aus dem Cache geladen und kennt "format" noch nicht.. oder wurde der Helper direkt mit beiden Parameter angelegt und erstmalig aufgerufen?
    Um Caching als Problem auszuschließen einmal den kompletten Cache löschen und ggf. die Extension einmal neu im Ext-Manager installieren. Klingt komisch, hat bei mir aber schon häufig geholfen ;)

  • 0 x
    64 Beiträge
    4 Hilfreiche Beiträge
    12. 02. 2014, 12:51

    Ich fall gleich vom Stuhl...
    Ich hatte den Frontend-Cache und alle Caches über das Backend geleert und gedacht, dass das reicht. Aber du hattest Recht! Nachdem ich im Installtool auch nochmal alle Caches geleert und die Extensions auf Fehler habe prüfen lassen (Typo3 6.2 beta5), hat es funktioniert :-)
    Vielen Dank!

  • 1