ExtBase/Fluid: Ein Standalone Template verarbeiten

Falls man in der Extension-Entwicklung mit Extbase & Fluid mal ein Template ohne direkten Bezug zu einem Controller verarbeiten muss, so lässt sich dies mit einem Fluid Standalone Template realisieren. Nach dem Rendern lässt sich das verarbeitete HTML Template an eine beliebige Stelle zurückgeben um es entsprechend einzusetzen oder um beispielweise ein E-Mail Template zu verarbeiten.

In dem folgenden Snippet habe ich für unsere „Simple Google Maps“-Extension ein zusätzliches Template verwendet, in dem die Infofenster für die einzelnen Marker entsprechend mit HTML Tags formatiert werden.

Das folgende Template setzt bereits auf die in Version 6.0 verwendeten Namespaces ála:

TYPO3\\CMS\\Fluid\\View\\StandaloneView

Im folgenden wird der Funktion eine Objekt übergeben, welches dann von Fluid im Template verarbeitet werden kann.

    /**
    * Creates the infowindow for each marker
    *
    * @param \TYPO3\TgmSimplegooglemapV2\Domain\Model\GoogleMapLocation $googleMapLocation
    * @return string The Infowindow
    */
    protected function getLocationsInfoWindow(\TYPO3\TgmSimplegooglemapV2\Domain\Model\GoogleMapLocation $googleMapLocation) {

        /** @var \TYPO3\CMS\Fluid\View\StandaloneView $infoWindowView */
        $infoWindowView = $this->objectManager->get('TYPO3\\CMS\\Fluid\\View\\StandaloneView');

        // Dateiformat festlegen
        $infoWindowView->setFormat('html');
        $extbaseFrameworkConfiguration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);

        // Typoscript-Konfiguration fuer entsprechendes Template holen
        $templateRootPath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($extbaseFrameworkConfiguration['view']['infoWindowTemplatePath']);

        // Template-Pfad festlegen bzw. entsprechend anpassen
        $templatePathAndFilename = $templateRootPath . 'Standalone/Infowindow.html';
        $infoWindowView->setTemplatePathAndFilename($templatePathAndFilename);

        // Objekt übergeben und Template verarbeiten
        $infoWindowView->assign('location', $googleMapLocation);

        // Rendern und zurueckgeben
        $infoWindow = $infoWindowView->render();
        return $infoWindow;
    }

Schreibe einen Kommentar

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

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.