我发现包含此路径的模板正常工作
{% include 'AcmeDemoBundle:TemplateArchive:view.html.twig' with {'data': c.data} %}
虽然这似乎是不允许的:
{% include 'AcmeDemoBundle:TemplateArchive:6:view.html.twig' with {'data': c.data} %}
换句话说,我试图访问我已经整理到我的bundle / resources / views /文件夹中的子文件夹结构的模板。
如果我不允许比第一行的常规单级包含更深入地钻取,是否有另一种/更好的方法来构建这些模板文件?
(文件夹名称'6'表示我想要包含的数据库中的模板ID,它需要是动态的,并且很好地排序在文件夹中......)。
我已尝试命名我的模板文件夹't6',但没有区别,“没有前导字母的数字”不是这里的问题...
答案 0 :(得分:58)
怎么样?
{% include 'AcmeDemoBundle:TemplateArchive:6/view.html.twig' with {'data': c.data} %}
答案 1 :(得分:5)
两者都有效:
AcmeDemoBundle:TemplateArchive:6/view.html.twig
AcmeDemoBundle:TemplateArchive/6:view.html.twig
答案 2 :(得分:5)
从Symfony 2.2开始,您还可以使用Namespaced paths:
{% include '@AcmeDemo/TemplateArchive/6/bar.html.twig' with {'data': c.data} %}
您甚至可以定义自己的命名空间:
# app/config/config.yml
twig:
# ...
paths:
"%kernel.root_dir%/../src/Acme/DemoBundle/Resources/views/TemplateArchive": TemplateArchive
然后使用它:
{% include '@TemplateArchive/6/view.html.twig' with {'data': c.data} %}
这也适用于控制器(也有自定义命名空间):
// TemplateArchiveController.php
return $this->render('@TemplateArchive/6/view.html.twig', ['data' => $c.getData()]);
来自[Symfony Cookbook: Namespaced paths]:
作为一个额外的好处,命名空间语法更快。