我继承了一个使用Symfony2和Twig的应用程序,对我来说这是一个新事物,所以请随意指出我遗漏的明显事实。
进入一个问题,其中两个不同的其他模板中包含的相同模板无法包含第三个模板,具体取决于两个“调用”模板中的哪一个包含它。
换句话说, 两个主要视图模板:
smallpictures.html.twig
bigpictures.html.twig
都包含第三个模板:
picturegrid.html.twig
在 picturegrid 模板中,模板还有另一个包含:
importantstuff.html.twig
importantstuff 模板无法正常加载,具体取决于您是否正在查看 smallpictures.html.twig 或 bigpictures.html.twig
smallpictures 中的include语句是这样的:
{{ include('MyBundle:SmallPictures:picturegrid.html.twig') }}
bigpictures 中的include语句是这样的:
{% include 'MyBundle:SmallPictures:picturegrid.html.twig' with {'param1': param1, 'param2': 'param2'} only %}
重要资料的 picturegrid 中的include语句是这样的:
{% include 'partials/components/stuff/importantstuff.html.twig' %}
当使用 bigpictures 模板时,最后一次包含无法正常工作 - 它在网站上加载了空白内容。
我不认为include语句的语法差异在这里很重要,但根据Twig documentation,关键字only
会删除对包含模板的上下文的访问权限。当我删除此关键字时, importantstuff 模板会被正确包含。</ p>
问题 - 如果模板没有上下文,应该如何包含其他模板?文件夹结构如下所示:
app
-- Resources
---- MyBundle
------ views
-------- SmallPictures
-------- BigPictures
---- views
------- partials
--------- components
------------ stuff