直到TYPO3 v9,可以将用于相应控制器动作的控制器和流体模板放入子文件夹,如下所示:
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'],
[]
);
由于控制器名称为“ Product \ Cars”,所以相对流体模板路径将解析为:
typo3conf/ext/my_extension/Resources/Private/Templates/Product/Cars/List.html
在TYPO3 v10中,此功能不再起作用。我猜是因为现在您应该给一个完全合格的控制器名称,如下所示:
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是否有办法知道控制器在子文件夹中并解析模板,还检查正确的子文件夹?
如果文件结构相同,将使生活变得更加轻松。我还认为,当使用从父类继承的域模型和控制器来表示复杂的层次结构时,这一点尤其重要,这允许系统进行扩展(例如产品/飞机,产品/船等)。
您可以添加一长串文件夹,以在其中搜索布局/模板/部分。即使在其他扩展名的文件夹中。更高的密钥将首先尝试]
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/
}
}
}