TYPO3 Standalone view

Der MVC-Pattern ist eines der wichtigsten Entwurfsmuster in TYPO3. Dennoch gibt es oft Szenarien, in der auch außerhalb eines Extbase-Controllers ein FLUID-Template gerendert werden muss. Hier hilft uns TYPO3 (ab Version 7.3) mit den sogenannten Standalone views.

$standaloneView = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Fluid\View\StandaloneView::class);
$standaloneView->setLayoutRootPaths([
  \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('EXT:extensionfolder/Resources/Private/Layouts'),
]);
$standaloneView->setPartialRootPaths([
  \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('EXT:extensionfolder/Resources/Private/Partials'),
]);
$standaloneView->setTemplateRootPaths([
  \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('EXT:extensionfolder/Resources/Private/Templates'),
]);

$standaloneView->setFormat('html');
$standaloneView->setTemplate('Folder/TemplateName');
$standaloneView->assignMultiple([
  'var1' => 1,
  'var2' => true
]);

echo $standaloneView->render();

Zuerst instanziieren wir mittels makeInstance der GeneralUtility die StandaloneView. Es wird ein klassisches View-Objekt im Sinne von Extbase geliefert.

Danach muss der View mitgeteilt werden, wo sich die Layouts, Templates und Partials befinden. Erwartet wird ein absoluter Pfad. Um sich die ganze Sache zu vereinfachen verwenden wir wieder die GeneralUtility-Klasse, welche uns den absoluten Pfad einer Extension-Ressource liefert.

Alternativ kann auch mit der Funktion
setTemplatePathAndFilename($templatePathAndFilename)
der StandaloneView das Template direkt gesetzt werden (bitte mit absoluten Pfad und mit Datei-Endung).

Nun setzen wir noch das Format (quasi die Dateiendung) und anschließend das gewünschte Template (ausgehend vom zuletzt gesetzten TemplateRootPath).

Nach belieben noch Variablen an die View hängen und mittels Render das Template rendern. El vola! Wer wissen möchte was die Standalone-View noch für Optionen bietet, der schaut einfach direkt in die Klasse: /typo3/cms/typo3/sysext/fluid/Classes/View/StandaloneView.php

Weiterführende Links:

Leave a Reply

Next ArticleImpressionen von Miami