2013-03-17 27 views
1

我有一個包含定義塊Z的視圖B的視圖A.我可以有一個視圖C來擴展A並重新定義塊Z?用樹枝重新定義父視圖中包含視圖中初始定義的塊

不用說,如果我把B粘貼到A(不使用包含)它的工作原理。

舉一個實際例子:

A是項目的基礎。 B是包含菜單的項目的標題。 C是該項目的任何頁面。

我爲B中的每個菜單項定義了一個{%block active%} {%endblock%},我想通過{%block active%} class =「active」{%endblock%}來重新定義C將某些樣式應用於當前的活動菜單項。

如果這不是最好的解決方法?

回答

1

不幸的是,這是不可能的,或者它不會那麼容易。

爲什麼不將變量綁定到控制器的模板,並通過include將其傳遞給nav?

{% include MyAwesomeBundle:Modules:nav.html.twig with {activeItem: activeItem, activeItemClassName: activeItemClassName} %} 

另一種你想要

{# in base layout template #} 
{% block nav %} 
    {% include MyAwesomeBundle:Modules:nav.html.twig %} 
{% endblock %} 

{# in page template #} 
{% extends base-layout.html.twig %} 

{% block nav %} 
    {% include MyAwesomeBundle:Modules:nav_for_news.html.twig %} {# nav_for_news.html.twig extends nav.html.twig #} 
{% endblock %} 

這是什麼,你可以從你想

檢查什麼了parent() twig function這是非常有用得到最接近的一次。

+0

我結束了這樣做,類似於你的第一個建議,雖然我不是很高興,因爲我在控制器中獲得額外的變量,謝謝! – mezod 2013-03-17 17:10:11

+0

您可以使用Twig中的{{app.request.attributes.get('_ route')}}'使您的nav知道路由;這也會起作用 – 2013-03-17 17:13:00

相關問題