2016-03-10 44 views
2

在Symfony 2.8中,我有SharedBundle,我保留其他包之間共享的視圖和其他內容,包括應該由其他包的視圖擴展的整個佈局。
該共享佈局具有一些典型的塊,其中sidebar塊對於不同的捆綁應該是不同的。Symfony2/Twig - 如何將模板文件內容設置爲變量?

目前我沒有難看的解決方法:

SharedBundle側邊欄容器:

{% if sidebarcontent is defined %} 
    {{ sidebarcontent|raw }} 
{% else %} 
    SIDEBAR NOT FOUND 
{% endif %} 

而在其他包(這裏:BundleA)在每一個延伸共享的主視圖的視圖:

{% extends 'SharedBundle:layout.html.twig' %} 
{% block sidebar %} 
    {% include 'BundleA:_partials:sidebar.html.twig' %} 
{% endblock %} 
{% set sidebarcontent = block('sidebar') %} 

但我認爲這看起來不太好。有沒有更好的辦法?

回答

1

我認爲這是一個有效的方法。我能想到的唯一簡化不是使用變量sidebarcontent

您可以使用block('sidebar')if語句中:

{% if block('sidebar')|length > 0 %} 
    {{ sidebarcontent|raw }} 
{% else %} 
    SIDEBAR NOT FOUND 
{% endif %} 

確保塊檢查它的內容之前就存在,所以用一個空字符串初始化它:

{% block sidebar %}{% endblock %} 
+0

感謝。我通過變量傳遞模板,因爲實際上呈現它的樹枝是部分的,這是部分包含的,它包含在...等等。我前一段時間想到我不能覆蓋塊,是包括覆蓋模板。 – b174008

相關問題