2011-12-23 45 views
0

我刚才创建的AcmeHelloBundle所以我已经生成这个模板:Symfony2的:有关扩展模板

Hello {{ name }}! 

现在,我只是想修改包含页面的标题是“你好,约翰!” 。因此,作为一个第一次尝试我编辑base.twig.html和更改“欢迎”和“foobar的”,但标题不会改变..

所以最后更改标题我这样做:

{% extends '::base.html.twig' %} 

{% block body %} 
    Hello {{ name }}! 
{% endblock %} 

尽管它与这段代码正常工作(标题中的更改显示正确),但与我的第一次尝试有关,我想知道模板如何扩展base.html.twig,但未显示我在做的更改它..

Javi

+0

我不完全确定你在问什么,但是如果你要通过生产前端控制器,请务必在更新Twig模板后清除缓存。 – 2011-12-23 18:36:41

+0

我正在开发env。我改变了一些我的问题.. – ziiweb 2011-12-23 19:16:40

回答

0

以下模板不扩展任何其他模板:

Hello {{ name }}! 

这就是为什么基础模板中的更改对您不可见。

您必须明确地扩展模板(使用扩展语句)。就像你在你的第二个代码片段中所做的那样:

{% extends '::base.html.twig' %} 

{% block body %} 
    Hello {{ name }}! 
{% endblock %} 

这里没有魔法。 Twig会做你告诉它做的任何事情。

既然你是显式的,幕后并没有什么特别的事情发生,你并不局限于一个基本模板。您可以灵活地按照需要组织模板。

在Symfony文档的Templating章节中了解更多关于它的内容。部分关于three level inheritance解释了组织模板的良好做法。

+0

但为什么页面的标题是“欢迎”我的第一次尝试?这意味着base.html.twig正在扩展,不是吗? – ziiweb 2011-12-24 11:51:17

+0

不,如果您不使用模板中的“扩展”,base.html.twig不会扩展。我注意到chrome往往显示以前的标题,如果给定页面没有设置它。也许这是发生在你身上的事情。 – 2011-12-24 12:20:09