2011-12-23 87 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