如何使用bundle中的Symfony TwigComponent



我使用的是symfony 5.4。

我的供应商文件夹中有一个捆绑包,运行良好。

我已经创建了一个LiveTwigComponent。

当模板文件"network_list.html.twitch"位于我的"templates/components"文件夹中时,它可以完美地工作。由于该逻辑属于我的Bundle,我尝试将其移动到"src/Resources/views/components"文件夹中。如果我这样做,我就有一个错误:"找不到模板";components/network_list.html.twitch";在我的模板中,我将组件称为

{{ component('network_list') }}

我试着用bundle名称空间作为前缀,因为它适用于我的bundle 中的其他模板

{{ component('@MyFooBarBundle\network_list') }}

{{ component('@MyFooBarBundle\components\network_list') }}

但也不起作用,我有另一个错误消息

在呈现模板期间引发异常("未知组件";@MyFooBarBundle\components\network_list"。注册的组件为:network_list"(。

我怀疑我可能需要为trick添加一个配置行来告诉bundle查看我的bundle子文件夹,但我没有找到任何关于这方面的文档。

我做错了什么?

提前感谢

默认路径位于config/packages/twig.yaml中,如果您希望更改默认路径,可以在此处进行更改。如果要添加多个位置,可以将它们添加到"路径"部分并定义文件类型。下面的代码应该适用于您的用例:

# config/packages/twig.yaml
twig:
default_path: '%kernel.project_dir%/templates'
paths:
'%kernel.project_dir%/assets/css': css
'%kernel.project_dir%/src/Resources/views/components': twig

您可以自定义用于渲染组件的模板,方法是将其作为第二个参数传递给AsTwigComponent属性:

- #[AsTwigComponent('network_list')]
+ #[AsTwigComponent('network_list', template: '@MyFooBarBundle/network_list.html.twig')]
class NetworkListComponent
{
// ...
}

最新更新