3

背景

在 TYPO3 v9 之前,可以将用于相应控制器操作的控制器和流体模板放入子文件夹中,如下所示:

类/控制器/产品/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 有没有办法知道控制器在子文件夹中并解析模板,同时检查正确的子文件夹?

当文件结构相同时,它使生活变得更加容易。我还认为,当使用从父类继承的域模型和控制器来表示复杂的层次结构时,这一点尤其重要,从而允许系统扩展(想想产品/飞机、产品/船舶等)。

4

1 回答 1

3

您可以添加一长串文件夹来搜索您的布局/模板/部分。即使在其他扩展的文件夹中。将首先尝试更高的密钥

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/
        }
    }
}
于 2020-01-19T03:22:30.523 回答