我正在使用Symfony开发我的Web应用程序。
我有很多没有任何extend标签的模板文件。
目前它们只显示自己的内容,但我希望它们都能扩展自母模板。
我知道可以使用以下代码:
{% extends 'AnmeBundle::layout.html.twig' %}
{% block body %}
有没有不需要在每个模板文件中编写的方法来实现这个?
对于Symfony 2.0
我相信你可以通过复制来绕过这个问题。
TwigBundle/Resources/views/layout.html.twig
到
app/Resources/TwigBundle/views/layout.html.twig
在那里,您可以覆盖Twig基本文件,并且它应该影响所有模板。
将来,在启动项目时,我会创建一个base.html.twig模板,并在创建其他模板时将其包含在内,而不是超载twig base
我强烈推荐RTM:http://symfony.com/doc/current/book/templating.html
对于Symfony 1.4
layout.php(位于apps//templates/layout.php中)是默认的全局模板。全局模板用于公共代码(标题,页脚,bot代码,Google Analytics)。
您可以在与layout.php相同的文件夹中创建自己的全局模板,并使用该模块的view.yml强制不同的操作使用不同的全局模板。
像这样:
indexSuccess:
layout: my_layout
或者你可以在操作中以编程方式实现:
$this->setLayout('my_layout');
或者在模板中
<?php decorate_with('my_layout') ?>
我强烈推荐 RTM: http://www.symfony-project.org/gentle-introduction/1_4/en/07-Inside-the-View-Layer