In diesem Tutorial wird erklärt, wie man einen eigenen Viewhelper in der eigenen Extension erstellen und ausgeben kann. In diesem Beispiel wird via PHP die aktuelle Uhrzeit in einem Viewhelper ausgegeben.

1. Ordner und Dateien unter Classes anlegen

Da Viewhelper ohne Registrierung oder Konfiguration direkt eingesetzt werden können, muss nur die Ordner- und Dateistruktur für den gewünschten Viewhelper angelegt werden.

Legen Sie folgende Ordner und Dateien an:

 

meineExt/Classes/ViewHelpers/
meineExt/Classes/ViewHelpers/CustomDateViewhelper.php

 

In diesem Beispiel erstellen wir eine PHP Datumsausgabe in dem Viewhelper, daher ist der Name selbsterklärend.

2. Viewhelper Klasse in PHP definieren

Nun definieren Sie in "CustomDateViewhelper.php" die Funktionen. Beachten Sie, dass folgende Methoden vorausgesetzt werden:

 

public function initializeArguments() {}
public static function renderStatic() {}

 

Beispielhaft sieht eine solche Viewhelper Klasse so aus:

 

<?php

namespace LdoerrDotCom\meineExt\ViewHelpers;

use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;

/**
 * Class CustomDateViewhelper
 *
 * The ViewHelper returns the current date if parameter "variable" is yes
 *
 * ----
 *
 *
 * Possible use cases would look like this:
 * - {ld:customDate(variable:'yes')}
 * - <ld:customDate variable="no" />
 *
 * Declaration: xmlns:ld="http://typo3.org/ns/LdoerrDotCom/meineExt/ViewHelpers"
 *
 * @package LdoerrDotCom\meineExt\ViewHelpers
 *
 */
class CustomDateViewhelper extends AbstractViewHelper
{

    use CompileWithRenderStatic;

    /**
     * Arguments Initialization
     */
    public function initializeArguments()
    {
        $this->registerArgument('variable', 'String', 'Return date or not', true);
    }

    /**
     * Returns a variety of values depending on the operation used
     *
     * @param array $arguments
     * @param \Closure $renderChildrenClosure
     * @param RenderingContextInterface $renderingContext
     *
     * @return mixed
     */
    public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext) {
        $variable = $arguments['variable'];
        if($variable === 'yes') {
          return date('H:i:s');
        }
    }
}

 

Wie in der Beschreibung oben vor der Klasse kann man nun seinen Viewhelper im FluidTemplate registrieren.

3. Viewhelper im Fluid einsetzen

Nun kann in jedem Fluid Template, egal von welcher Extension der Viewhelper eingesetzt werden. Dazu deklarieren Sie einfach Ihren Viewhelper beim öffnenden HTML Tag:

 

<html xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers"
      xmlns:ld="http://typo3.org/ns/LdoerrDotCom/meineExt/ViewHelpers"
      data-namespace-typo3-fluid="true">

...

<ld:customDate variable="yes"/>

</html>

 

Nun wird, wenn die variable "yes" ist, die aktuelle Uhrzeit an der Stelle ausgegeben.

Previous PostTYPO3 Tutorial: Flux Page Layouts zu normalen Page Layouts migrieren
Next PostSpecified key was too long; max key length is XXX bytes - beheben