如何使Twig模板包含在同一个包中的文件?

Dan*_*eed 5 symfony twig

我对Symfony比较陌生.我有一个带有twig模板的bundle,它们在目录结构中自动加载注释,如:

src/bundle/Resources/views/Default/
Run Code Online (Sandbox Code Playgroud)

我的一个模板有一大堆代码重复了很多次(每个实例都有一些小的改动),我认为这样做包括几次格式化如下:

{% include 'form_include.html' with {'foo': 'bar'} %}
Run Code Online (Sandbox Code Playgroud)

每个实例的不同变量应该运行良好.但调试器告诉我它正在寻找包含文件

/app/Resources/
Run Code Online (Sandbox Code Playgroud)

但模板真的特定于这个包,我不希望它保存在其他地方.我尝试使用该../../src....方法指定其位置,没有运气.有没有办法做到这一点?

A.L*_*A.L 10

您可以使用捆绑包的名称提供路径:

{% include 'YourBundleNameBundle:Default:form_include.html.twig' with {
    'foo': bar
} %}
Run Code Online (Sandbox Code Playgroud)

每个部分由以下分隔::

  • YourBundleNameBundle 对应于 src/YourBundleNameBundle/Resources/views/
  • Default对应/Default于此文件夹中的目录
  • form_include.html.twig对应form_include.html.twig于此文件夹中

因此,该'YourBundleNameBundle:Default:form_include.html.twig'值将加载该src/bundle/Resources/views/Default/form_include.html.twig文件.

这句法适用于不同的嫩枝功能:include,extends,等.

它对于允许模板继承很有用.