2013-10-30 62 views
0

在樹枝限定底座模板,我要保留一個區域用於特殊通知,使用塊。它可能是一個額外的邊欄,可能包含各種東西(日曆,或一些額外的信息,無論如何)。默認應該是emtpy,但任何子模板可能會擴展並填充它。結合可選的塊與元件樹枝

現在我想將所有這些擴展包含在<div class='special-sidebar'>如果塊被延長,而如果不包括它不顯示任何東西。有什麼方法可以在基本模板中定義包含元素嗎?

{# Base template #}  
Content etc... 
{% block special %} {# may be overridden by child template #}{% endblock %} 

{# child template #} 
{% block special %} Here, the special sidebar is filled! {% endblock %} 

基地頁面應該只顯示內容:

// base template: 
Content etc... 

而且子頁:

// child template 
Content etc... 
<div class"special-sidebar"> Here, the special sidebar is filled! </div> 

在哪裏,我怎麼把HTML的呢?我可以在每個孩子中定義它,但這意味着您必須記住每次使用正確的html,我寧願將其設置在基本模板中,而不打擾它。但是,如果塊未被覆蓋,我不希望頁面中有空元素。

+1

這是你在找什麼? http://stackoverflow.com/questions/13774384/how-to-check-if-a-block-exist-in-twig-template-symfony2 – puelo

+0

我認爲這是!傷心的是,沒有辦法讓它做得更優雅一點,因爲我認爲後來有人會馬上抓住它,但是謝謝! – Inca

+0

我把它添加爲答案。 – puelo

回答

2

你能解決這個樣子,如果你想顯示某塊只有當它的內容。希望,這是你正在尋找的。

例index.html.twig

{% set _block = block('dynamic') %} 
{% if _block is not empty %} 
    {{ _block|raw }} 
{% endif %} 

例part.html.twig

{% extends "index.html.twig" %} 

{% block dynamic %} 
    Block content goes here. 
{% endblock %} 

來源:How to check if a block exists in a twig template - Symfony2