TYPO3 Standalone view

In TYPO3 (ab Version 7.3) eine View außerhalb der typischen Controller-Umgebung von Extbase zu rendern ist recht simpel:

$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:

Aussicht auf Dresden von der Schwebebahn