Eigene ViewHelper in Fluid

Wer schon einmal mit Extbase und Fluid zu tun hatte, ist auch mit großer Wahrscheinlichkeit bereits über die sogenannten ViewHelper gestolpert. Diese sind ein fester Bestandteil von Fluid und bieten einige äußerst praktische und außerdem unverzichtbare Funktionen bei der Arbeit mit Fluid-Templates.

Jedoch gibt es selbstverständlich nicht für alles einen ViewHelper. Was also tun, wenn man vor einem Problem steht, welches durch die standard ViewHelper nicht zu bewältigen ist? Richtig, man schreibt sich einen eigenen ViewHelper.

Um einen eigenen ViewHelper zu erstellen muss zuerst die Ordnerstruktur der Extbase Extension erweitert werden. Dazu muss der Ordner ViewHelpers im Ordner Classes des Extension Ordners angelegt werden, also typo3conf/my_extension/Classes/ViewHelpers. In diesem Ordner wird dann die Datei für den eigenen ViewHelper erstellt. In diesem Beispiel ExplodeViewHelper.php. Wie der Dateiname schon sagt, handelt es sich dabei um einen ViewHelper, der wie die PHP-Funktion explode() funktioniert und diese auch verwendet. Dieser ViewHelper ist zwar ganz simpel, ist aber einerseits teilweise ganz praktisch und andererseits reicht er zu Demonstrationszwecken vollkommen aus.

Die Datei ExplodeViewHelper.php enthält folgenden Code:

Der Rückgabewert der Funktion render() kann dann in Fluid weiterverwendet werden, in diesem Fall handelt es sich dabei um ein Array.

Um den eigenen ViewHelper in Fluid verwenden zu können, muss im entsprechenden Template ein Namespace definiert werden:

Danach kann der ViewHelper folgendermaßen verwendet werden:

Nachdem in diesem Fall aber ein Array zurückgegeben wird, ist die gemeinsame Verwendung mit dem for ViewHelper sinnvoller. Hierbei muss die Shorthand-Syntax verwendet werden:

1 Kommentar zu “Eigene ViewHelper in Fluid

  1. Jan
    11

    Mark

    Vielen Dank für das kleine Tutorial! Sehr gut erklärt.

    Ich habe eine allgemeine Frage. Ich habe schon gesehen, dass man für Viewhelper eigene Controller schreiben kann. Was ist der Grund dafür?
    Gehört eine Viewhelper Klasse logisch gesehen zur View im MVC Modell?
    Kann man nur über so einen Controller ein eigenes html Template pro Viewhelper machen und z.B. Datenbankabfragen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *