首页 文章

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

提问于
浏览
0

(a)包(包1)包含主父Twig模板 .

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

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

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

1 回答

  • 0

    如果我理解正确,您就会问如何在从一个包到另一个包的依赖关系中轻松扩展模板 .

    我建议你阅读关于overriding bundle templates的文档 .

    阅读本文后,您会注意到一个指向[bundle inheritance documentation]的链接 .

    例如,我们有3个明确名称的包: - GenericSiteBundle - GenericUserBundle - SpecificSiteBundle

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

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

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

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

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

相关问题