Hallo zusammen!
Ich bastle gerade mein erstes Flow-Projekt zusammen um das Framework mal kennenzulernen. Die ersten Basisschritte sind gemacht, ich stelle jedoch immer wieder fest, dass vieles noch nicht oder unzureichend dokumentiert ist und es auch nur wenige Beispiele gibt, die teilweise auch schon wieder überholt sind.
Bei der Anpassung des Paginate-Widgets hänge ich nun total: ich wollte eigentlich nur die Optik anpassen, wollte dafür aber natürlich keine Anpassung im Framework-Ordner machen. Da ich keine Möglichkeit gefunden habe sonst ein anderes Template "unterzujubeln" war mein naiver Ansatz, dass ich das Widget ja einfach in meiner Applikation extenden könnte ohne Funktionen hinzuzufügen.
Das habe ich auch gemacht und ein entsprechend ein Template angelegt. Bislang sind auch noch keinerlei Anpassungen drin, es ist also eigentlich ein reines Duplikat des Originals.
Leider funktioniert das Ganze gar nicht und mir fehlt im Moment der Ansatz. Das Resultat ist ein Fehler "Cannot cast object of type "TYPO3\Flow\Persistence\Doctrine\QueryResult" to string" - ich finde in der Ablaufverfolgung allerdings nichtmal irgendwo meinen ViewHelper - das lässt mich fast vermuten, dass schon der Aufruf nicht funktioniert. Einen eigenen Namespace habe ich im Default Layout definiert - mein Gedanke war, dass das eigentlich schon ausreichen müsste.
Hat jemand einen Ansatz für das Problem, einen Link zu passenden Tutorials / Dokumentationen oder eine Alternative?
Viele Grüße,
Christian
Keine Ahnung ob Dir das irgendwie weiterhilft, aber ich habe mal ein Tutorial für einen Paginate ViewHelper mit Array Unterstützung geschrieben. Der ist zwar für TYPO3 6.1, aber vielleicht kriegst Du ihn ja zum Laufen und castest dein QueryResult dann einfach in ein Array welches Du dann an den View weitergibst.
http://blog.teamgeist-medien.de/2014/01/extbase-fluid-widget-paginate-viewhelper-mit-array-unterstuetzung.html
Hallo!
Danke für die Antwort - das Problem hat sich allerdings mittlerweile "von selbst" gelöst. Mein Ansatz war schon richtig (bzw. korrekter: er funktioniert - vielleicht gibt's ja noch einen idealeren Weg). Allerdings funktionierte der Namespace einfach nicht.
Sobald ich ihn im betreffenden Template anstelle der Default-Layout-Datei angegeben hatte war alles in Ordnung.
Vielleicht hat ja noch jemand eine Idee, woran das liegt - das würd' mich schon interessieren und ich kann mich nicht daran erinnern, in der Template-Doku sowas gelesen zu haben.
Sind Namespaces nur in "Einzeltemplates" erlaubt bzw. müssen sie in jedem Template etwa sogar erneut angegeben werden?
Edit: Falls jemand das liest und den Grund weiß: Mich würde auch interessieren, warum das Fehlerbild so "komisch" war - ich hätte eine Fehlermeldung erwartet, die auf den fehlenden / nicht definierten Namespace schließen lässt - der Cast-Fehler verwundert mich an dieser Stelle.
Ab Flow 2.1 kannst Du auch über Views.yaml configuration die Templates überschreiben, aber dafür brauchen wir auf jeden Fall mal noch bessere Doku.
Fluid namespaces müssen für jede Datei definiert werden, das erhöht die Wiederverwendbarkeit weil wir uns nicht darauf verlassen müssen, dass ein benutzer Namespace eventuell im Layout/Template schon definiert wurde.
Das der Fehler so gekommen ist, liegt wahrscheinlich daran, dass erst versucht wird das template auszuwerten und erstmal der Fluidparser nicht registrierte Namespaces ignoriert und als custom Tag durchgehen lässt, könnte ja sein, dass dein Template sowas enthält. Der Cast Fehler kommt dann weil natürlich die Argumente des ViewHelpers trotzdem geparsed werden aber eben nicht an den ViewHelper übergeben sondern versucht wird die als String in den custom Tag zu schreiben.
Viele Grüße
Christian
Das erklärt viel und hilft weiter. Danke für die Tipps!