如何从包中使用Symfony TwigComponent

yrdbyhpb  于 2023-01-31  发布在  其他
关注(0)|答案(2)|浏览(94)

我用的是symfony 5. 4。
我有一个捆绑包位于我的供应商文件夹,工作正常。
我已经创建了一个LiveTwigComponent。
当模板文件"network_list. html. twig"位于我的"templates/components"文件夹时,它可以完美地工作。由于逻辑属于我的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"。注册的组件为:网络列表")。
我怀疑我可能需要为twig添加一个config行来告诉bundle查看我的bundle子文件夹,但我没有找到任何相关文档。
我做错了什么?
先谢了

eit6fx6z

eit6fx6z1#

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

# 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
6tqwzwtp

6tqwzwtp2#

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

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

相关问题