背景
在 TYPO3 v9 之前,可以将 Controller 和相应 Controller Action 的流体模板放入子文件夹中,如下所示:
Classes/Controller/Product/CarController.php
namespace Vendor\MyExtension\Controller\Product;
class Car extends AbstractProduct {
public function listAction(){
// ...
}
}
ext_localconf.php
ExtensionUtility::configurePlugin(
'MyExtension',
'CarsPlugin',
['Product\Cars' => 'list'],
[]
);
由于 Controller 名称为“Product\Cars”,相关流体模板路径将解析为:
typo3conf/ext/my_extension/Resources/Private/Templates/Product/Cars/List.html
在 TYPO3 v10 中这不再有效。我想这是因为现在你应该像这样给出一个完全合格的 Controller 名称:
ext_localconf.php
ExtensionUtility::configurePlugin(
'MyExtension',
'CarsPlugin',
[\Vendor\MyExtension\Controller\Product\CarController::class => 'list'],
[]
);
现在,TYPO3 只尝试重新喜欢这个模板:
/typo3conf/ext/my_extension/Resources/Private/Templates/Car/List.html
问题
有没有办法让 TYPO3 v10 知道 Controller 在子文件夹中并解析模板,同时检查正确的子文件夹?
当文件结构相同时,这会让生活变得更加轻松。我还认为,在使用从父类继承的域模型和 Controller 表示复杂的层次结构时,这尤其重要,允许系统扩展(想想产品/飞机、产品/船舶等)。
最佳答案
您可以添加一长串文件夹来搜索您的布局/模板/局部。即使在其他扩展的文件夹中。将首先尝试更高的 key
plugin.tx_myextension {
view {
templateRootPaths {
10 = EXT:my_extension/Resources/Private/Templates/
20 = EXT:my_extension/Resources/Private/Templates/Product/
}
partialRootPaths {
10 = EXT:my_extension/Resources/Private/Partials/
20 = EXT:my_extension/Resources/Private/Partials/Product/
}
layoutRootPaths {
10 = EXT:my_extension/Resources/Private/Layouts/
20 = EXT:my_extension/Resources/Private/Layouts/Product/
}
}
}
关于TYPO3 v10 Action Controller 和子文件夹内的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58301045/