【发布时间】:2023-01-29 13:45:59
【问题描述】:
我正在使用 symfony 5.4。
我的供应商文件夹中有一个包,可以正常工作。
我创建了一个 LiveTwigComponent。
当模板文件“network_list.html.twig”位于我的“模板/组件”文件夹中时,它可以完美运行。 由于逻辑属于我的 Bundle,我试图将它移动到“src/Resources/views/components”文件夹。 如果我这样做,我有一个错误: “无法找到模板“components/network_list.html.twig” 在我的模板中,我这样调用组件
{{ component('network_list') }}
我尝试使用 bundle 命名空间作为前缀,因为它适用于我的 bundle 中的其他模板
{{ component('@MyFooBarBundle\\network_list') }}
和
{{ component('@MyFooBarBundle\\components\\network_list') }}
但也不起作用,我有另一条错误消息
模板渲染期间抛出异常(“未知组件“@MyFooBarBundle\components\network_list”。已注册的组件为:network_list”)。
我怀疑我可能必须为 twig 添加一个配置行来告诉 bundle 查看我的 bundle 子文件夹,但我没有找到任何关于此的文档。
我究竟做错了什么 ?
提前致谢
【问题讨论】:
-
命令
bin/console debug:twig将列出所有当前的 twig 命名空间。通常会删除Bundle后缀。所以试试@MyFooBar\whatever。 -
感谢这个命令,我可以确认我的命名空间出现了,我可以在我的控制器中引用这些包模板这一事实证实了这一点。路径也是正确的,指向我的包的 /src/Resources/views 文件夹。但是,如果我尝试使用前缀 @MyBundleNameWithoutSuffix\\ComponentName 调用该组件,则会出现此组件不存在的错误。同样通过直接调用不带前缀的组件名称
-
那么为什么要使用双反斜杠呢?正斜杠是常态:
'@MyFooBar/components/network_list.html.twig'