T3SEO

TYPO3 and SEO since 2011

Eigene Fluid-ViewHelper schreiben I

Neben dem Standardrepertoire an ViewHelpern, die direkt mit Fluid ausgeliefert werden, kann man für die eigene Extension auch selbst ViewHelper programmieren. Und das geht schneller und einfacher als man sich das vielleicht vorstellt.

ViewHelper-Klasse anlegen

Da in Extbase und Fluid fast alles über Konventionen funktioniert, gibt es einen bestimmten Ort, an dem die eigenen ViewHelper platziert werden müssen, damit sie sich im Fluid-Template benutzen lassen. Im Ordner einer Extension muss dafür innerhalb von Classes der Ordner ViewHelpers angelegt werden.

Der Name eines ViewHelpers muss auf "ViewHelper" enden. Lege im ViewHelpers-Ordner eine PHP-Datei mit diesem Namen an, z.B. ReverseViewHelper.php.

Diese PHP-Datei enthält dann die Klasse Tx_[DeineExtension]_ViewHelpers_ReverseViewHelper:

<?php

class Tx_MyExt_ViewHelpers_ReverseViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {

	/**
	 * Reverses the string
	 *
	 * @param string $string
	 * @return 
	 */
	public function render($string) {
		return strrev($string);
	}

}

?>

Das ist die Minimalform eines selbstgebauten ViewHelpers:

  • Der ViewHelper ist eine Klasse, die Tx_Fluid_Core_ViewHelper_AbstractViewHelper erweitert. (Für bestimmte Arten von ViewHelpern bietet Fluid noch andere geeignete Basisklassen an, die aber letzendlich auch nur eine Erweiterung des AbstractViewHelper sind.)
  • Die Methode render() muss implementiert werden. Sie wird beim Rendern des ViewHelpers aufgerufen.
  • Wie an so mancher Stelle in Extbase und Fluid ist der DocComment der render()-Methode verpflichtend. Alle Parameter des ViewHelper müssen dort mit einer Datentypangabe deklariert werden.

Unser ReverseViewHelper ist direkt einsatzbereit:

Eigener ViewHelper im Einsatz

{namespace m=Tx_MyExt_ViewHelpers}
<h2>Example usages</h2>
<ul>
    <li>
        Fluid is
        <m:reverse string="lufrewop" />
    </li>
    <li>
        Extbase is {m:reverse(string:'lufrewop')}
    </li>
</ul>
  • Die erste Zeile ist entscheidend, wenn eigene ViewHelper eingesetzt werden sollen. Hier wird in Fluid ein Namespace definiert, der aussagt aus welcher Extension der jeweilige ViewHelper kommt.
  • In diesem Fall habe ich m als Namespace für meine MyExt-Extension festgelegt. Dank der Namenskonvention weiß Fluid sofort wo es die ViewHelper-Klasse zu suchen hat. Die Bezeichnung des Namespace ist frei wählbar und kann auch aus mehr als einem Zeichen bestehen.
  • Der ViewHelper kann als Tag oder in der Kurzversion mit geschweiften Klammern eingesetzt werden.

Ausblick

Ich will in Kürze noch 2 oder 3 weitere Artikel zum Thema selbstgebaute ViewHelper schreiben, die sich mit den weiterführenden Möglichkeiten beschäftigen. Also schön den Feed abonnieren und oder über Twitter auf dem Laufenden bleiben.

Eigene Fluid-ViewHelper schreiben I