(a)包(包1)包含主父Twig模板 .
(b)另一个捆绑包(捆绑包2)拥有一堆控制器,这些控制器每个都呈现一个在该捆绑包内的Twig模板(捆绑包2) . 该模板还扩展了上面提到的主要父模板(包1) . 硬编码主父模板的绝对路径很好 .
(c)父模板(内部包1)还嵌入/包括另一个模板,该模板存储在另一个包(包2)中 .
我可以为上面的部分(c)设置一个相对路径,这样如果我创建了另一个bundle(bundle 3),它会自动工作(父模板包含调用它的bundle中的模板)吗?它会选择主要的父母,因为它是一个绝对的路径,但它会选择上面的部分(c)吗?显然,我不能使用父级嵌入/包含的模板的绝对路径 .
1 回答
如果我理解正确,您就会问如何在从一个包到另一个包的依赖关系中轻松扩展模板 .
我建议你阅读关于overriding bundle templates的文档 .
阅读本文后,您会注意到一个指向[bundle inheritance documentation]的链接 .
例如,我们有3个明确名称的包: - GenericSiteBundle - GenericUserBundle - SpecificSiteBundle
我们想为应用程序创建一个可供其他应用程序使用的通用结构,我们也希望它们不同,因此我们需要能够更改布局(页眉,页脚,列等) .
模板结构类似于
GenericUserBundle:Security:login.html.twig
extendsGenericSiteBundle:Layout:simple.html.twig
.您希望使用特定的布局更改简单布局;您需要做的就是将
GenericSiteBundle
声明为SpecificSiteBundle
的父级并创建SpecificSiteBundle:Layout:simple.html.twig
. 确保只有捆绑名称不同,否则它将无法在子捆绑包中找到该模板 .此外,你会喜欢这个parent() twig function . 它允许您获取父块的内容并将其添加到子块中 .
这不是你想要做的,而是处理继承的正确方法 .