Symfony2中Twig的特定动态嵌入路径

时间:2013-03-16 19:08:20

标签: symfony twig

(a)捆绑(捆绑1)包含主要父Twig模板。

(b)另一个捆绑包(捆绑包2)拥有一堆控制器,每个控制器都呈现一个在该捆绑包内的Twig模板(捆绑包2)。该模板还扩展了上面提到的主要父模板(包1)。硬编码主父模板的绝对路径很好。

(c)父模板(内部包1)还嵌入/包含另一个模板,该模板存储在另一个包(包2)中。

我可以为上面的部分(c)设置一个相对路径,这样如果我创建了另一个bundle(bundle 3),它会自动工作(父模板包含调用它的bundle中的模板)?它会选择主要的父母,因为它是一个绝对的路径,但它会选择上面的(c)部分吗?显然,我不能对父模板嵌入/包含的模板使用绝对路径。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您就会问如何在从一个捆绑包到另一个捆绑包的过程中轻松扩展模板。

我建议您阅读有关overriding bundle templates的文档。

读完这篇文章后,您会注意到一个指向[bundle inheritance documentation]的链接。

例如,我们有3个带有显式名称的包:   - GenericSiteBundle   - GenericUserBundle   - SpecificSiteBundle

我们希望为其他应用程序可以使用的应用程序创建通用结构,我们也希望它们不同,因此我们需要能够更改布局(页眉,页脚,列等)。 / p>

模板结构类似于GenericUserBundle:Security:login.html.twig extends GenericSiteBundle:Layout:simple.html.twig

您希望使用特定布局更改简单布局;您需要做的就是将GenericSiteBundle声明为SpecificSiteBundle的父级并创建SpecificSiteBundle:Layout:simple.html.twig。确保只有包名称不同,否则它将无法在子包中找到该模板。

另外,你会喜欢这个parent() twig function。它允许您获取父块的内容并将其添加到子块中。

这不是你想要做的,而是处理继承的正确方法。