Um beispielsweise bei Buchungssystem Daten automatisiert in Dateien zu exportieren, legt man logischerweise einen Scheduler Task an. Da es allerdings nicht sehr schön ist die Datei direkt im „Controller“ bzw. dem „Task“ zusammen zu setzten, ist es hilfreich das Ganze in ein Fluid Template auszulagern.
Um im Scheduler Task Context \TYPO3\CMS\Scheduler\Task\AbstractTask allerdings Fluid rendern zu können, müssen wir zunächst eine Instanz des ObjectManager erzeugen, welche es uns dann erlaubt einen StandaloneView zu verwenden.
Hier hilft folgende Funktion:
/** * @param string $pathToFile Model/Template.html * @param mixed $appendData */ public function getRenderedFluidTemplate($pathToFile, $appendData) { // Generate and set the basic Fluid View File and Pathes $templateRootPath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('EXT:extname/Resources/Private/Templates/'); $tenplateLayoutRootPath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('EXT:extname/Resources/Private/Layouts/'); $templatePathAndFilename = $templateRootPath . $pathToFile; // Create an Instance of a Fluid StandaloneView Object $view = $this->objectManager->get('\TYPO3\CMS\Fluid\View\StandaloneView'); /** @var StandaloneView $view */ $view->setLayoutRootPath($tenplateLayoutRootPath); $view->setTemplatePathAndFilename($templatePathAndFilename); $view->assign('data', $appendData); $renderedTemplate = $view->render(); return $renderedTemplate; }
Mit dieser Funktion, kann jedes Fluid Template gerendert werden. Auch ist nun die Verwendung von sämtlichen ViewHelpern möglich.
Um das ganze mit Leben zu füllen, kann auch in diesem Context mithilfe des ObjectManagers ein Repository injected werden.
Es muss allerdings noch der Extension Name definiert werden.