假设您处于 BE 或 CLI 上下文中(例如,通过 extbase 命令控制器任务发送电子邮件),以下操作多达 7 个 LTS 以呈现流畅的独立视图:
$view = $this->objectManager->get(StandaloneView::class);
$view->setTemplatePathAndFilename('/Absolute/Path/To/Template.html');
$view->setFormat('html');
$view->getRequest()->setControllerExtensionName('Myextensionname');
return trim($view->render());
但是,在 8 LTS 中,这会引发以下异常:
尝试解析格式为“.html”的控制器操作“Standard->index”的模板文件,但没有一个路径包含预期的模板文件……没有配置路径。
正如https://wiki.typo3.org/How_to_use_the_Fluid_Standalone_view_to_render_template_based_emails#Usage_in_TYPO3_8.7的 wiki 页面中所建议的,我尝试为视图设置布局和部分根路径:
$view->setLayoutRootPaths(['EXT:Myextensionname/Resources/Private/Layouts/']);
$view->setPartialRootPaths(['EXT:Myextensionname/Resources/Private/Partials/']);
但是,这不会解决问题。
再深入一点,我可以想象必须设置控制器和动作名称,例如通过设置控制器上下文,但这似乎不是一个可靠的解决方案,因为多个其他类实例都与它相关联。
在 8 LTS 中渲染流畅的独立视图的正确方法是什么?