使用树枝扩展名将链接标记为活动状态?

时间:2015-04-16 16:23:07

标签: symfony templates service routes

我想在导航栏上有效地找到活动页面,以便为其应用不同的类。

目前,我这样做:

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

有没有办法在不重复自己的情况下做到这一点?

我正在考虑使用twig扩展来检查给定路由,但我没有找到在扩展代码中获取请求路由的方法。

2 个答案:

答案 0 :(得分:1)

部分是如何避免重复使用Twig。像这样创建一个_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

答案 1 :(得分: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是在控制器

分配的变量

所以你可以用类似的方式组织你的案子