2015-04-16 106 views
0

我想高效地找到我的導航欄上的活動頁面以應用不同的類。使用樹枝擴展將鏈接標記爲活動?

目前,我做這種方式:

{% if app.request.get('_route') == 'route_name' %} 
    <li class="active"> 
{% else %} 
    <li> 
{% endif %} 
<a href="{{ path('route_name') }}">Link</a></li> 

有沒有辦法做到這一點,而不必重複自己這麼多?

我想使用樹枝擴展來檢查給定的路由,但我沒有找到一種方法來獲取擴展代碼中的請求路由。

回答

1

部分是你如何避免與樹枝重複。創建一個_link.html.twig文件是這樣的:

{% if app.request.get('_route') == 'route_name' %} 
    <li class="active"> 
{% else %} 
    <li> 
{% endif %} 
<a href="{{ path('route_name') }}">Link</a></li> 

而且在你的模板做:

{% for route in routeToBeLinked %} 
    {% include '_link.html.twig' with { 'route_name': route } %} 
{% endfor %} 

有關文件包括:http://twig.sensiolabs.org/doc/tags/include.html

+0

這是爲什麼?它似乎像這樣按預期工作。我錯過了什麼嗎? – anthonyme

+0

對不起,我錯過了那行代碼...我會編輯我的回答 – Jean

+0

這看起來不錯,謝謝! – anthonyme

0

我覺得好主意,將適用 「宏」

有一點點另一種情況,但我這樣做我的過濾器選項卡:

<ul> 
     {{ _self.filter('unpaid', 'unpaid') }} 
     {{ _self.filter('unproduced', 'not yet in production') }} 
     {{ _self.filter('arrived', 'delivery will receive') }} 
</ul> 

{% macro filter(key, name) %} 
    <li class="{{ _filter == key ? 'active' : '' }}"><a href="{{ path('__order', {'_filter': key}) }}">{{ name }}</a></li> 
{% endmacro %} 

_filter是可變的分配在控制器

所以,你可以組織你的情況類似的方式