从控制器扩展捆绑中的所有模板

时间:2011-11-18 04:34:10

标签: symfony twig

我在一个包中有很多模板,它们都扩展了相同的layout.html.twig。而不是必须定义:

{% extends 'MyBundle::layout.html.twig' %}

在每个模板的顶部,有没有办法配置它?

我怀疑我需要创建一个pre或postExecute()方法,它基于在渲染之前扩展模板的事件监听器。

1 个答案:

答案 0 :(得分:2)

这不是一个好主意,因为不是每个模板都必须扩展布局:有一些“系统”模板,如form_div_layout.html.twig,并不意味着扩展任何东西。此外,并非您编写的每个模板都必须扩展布局;你会遇到很多用于小型嵌入式模板的用例,以便从其他模板中引用。

如果您尝试在每个模板上强制布局,则必须编写一些逻辑来排除“系统”和可嵌入模板,以便它们不会扩展任何内容,并且您必须执行相同操作您的布局模板也是如此,因此它不会无限延伸。在这种情况下,您将解决问题:您不必明确定义要在每个模板中扩展哪个布局,而是必须明确说明扩展布局的模板。这会很快变得非常混乱。

为了更全面地掌握这个想法,你需要知道,在幕后,模板实际上只是PHP类。将特定的类作为每个其他类的父类是否有意义,然后明确说明哪些类扩展此父类?

但是,如果我不相信你不这样做,有一个Twig设置,它允许你为所有模板设置基本模板类:

twig:
    base_template_class: Your\Layout\ClassName\Here

你可以延长\Twig_Template或实施\Twig_TemplateInterface并在几个小时内获得一些“乐趣”,之后我希望你会被说服放弃这个想法。祝好运。 :)

相关问题