ViewHelpers selbst erstellen

View Helpers sind vom Programmablauf vergleichbar mit Funktionen in php: es wird aus dem Fluid Template eine oder mehrere Variabeln übergeben die der View Helper verarbeitet. Dieser liefert ein return zurück und mit dem der viewHelper Aufruf in Fluid erstezt wird.

Die Vorteile: Unser Fluid Template (nur html) bleibt übersichtlich und im View Helper können wir in php schreiben.

ViewHelpers residieren im Verzeichnis Classes -> ViewHelpers und extenden in der Regel die Klasse \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper.

Ein einfaches Beispiel.

Wir haben im Template die Variablen A und B und möchten daraus die Summe haben.


Die ViewHelper Klasse

ViewHelpers brauchen neben dem passenden Klassennamen die public function render(). Übergebene Variablen müssen in Annotations rein. Unser Beispiel sieht dann so aus:

<?php
namespace Vendor\MyExtension\ViewHelpers;

class MyHelperViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {

 /**
     * Main method of the View Helper
     * 
     * @param int $varaibleA
     * @param int $varaibleB
     * 
     */
    public function render($varaibleA, $varaibleB) {
   
        $result = 0;
        if(varaibleA && varaibleB) {
            $result =  varaibleA + varaibleB;
        }
        return $result;
    }

Wenn Ihr die komplette Konfiguration eurer Extension braucht um zum Beispiel auf Settings zuzugreifen oder den ObjectManager, schaut weiter unter bei den special Cases :)


Der ViewHelper im Fluid Template

Zunächst müssen wir ein namespace für unseren Viewhelper vergeben. Dazu genügt ein Kürzel (f ist für die Core View Helper reserviert) und das ViewHelper Verzeichnis. Es können auch verschiedene ViewHelper aus unterschiedlichen Extensions geladen werden, diese brauchen dann verschiedene Kürzel um korrekt angesprochen zu werden.

Der eiegentliche Aufruf erfolgt dann mit dem Namespacekürzel und der ViewHelper Klasse:

{namespace myVH=Vendor\MyExtension\ViewHelpers}

 <myVH:myHelper variableA="2"  variableB="7"/>

Der komplette viewHelper Aufruf wird dann durch das return ersetzt, in diesem Fall also "9".


Special Cases - erweiterte viewHelper Funktionen

Um in viewHelpern auf die Settings zu zugreifen braucht ihr den Configuration Manager, dieser erfordert den Objekt Manager:

/**
 * @var \TYPO3\CMS\Extbase\Object\ObjectManager
 * @inject
 */
 public $objectManager;

/**
 * @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
 * @inject
 */
 protected $configurationManager;

Innerhalb der Render Funktion:

$configurationManager = $this->objectManager->get('TYPO3\CMS\Extbase\Configuration\ConfigurationManager');
$settings = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS, 'MyExtension', 'myPlugin');

Danach könnt ihr wie gewohnt auf die settings zugreifen:

$foo = $settings['bar'];

Weitere Artikel zu diesem Thema:

Empfehlenswerte Lektüre:

TYPO3 Extbase: Moderne Extension-Entwicklung für TYPO3

Ein nahezu perfektes Buch für TYPO3 Extensionentwickler die mit Extbase und Fluid beginnen, aber auch erfahrene Entwickler finden noch Anregungen um ihre eigene Arbeit ständig zu verbessern. Sehr ausführlich, kurzweilig, kein Lesestoff für die Couch sondern eher ein Mitmachbuch das Spaß und Unterstützung bei der eigenen Extensionentwicklung bietet.

Kommentare

keine Kommentare vorhanden


Kommentar verfassen

Die Email Adresse wird nicht veröffentlicht.