使用树枝扩展将 link 标记为活动?

Using a twig extension to mark link as active?

我想高效地找到我的导航栏上的活动页面,以对其应用不同的 class。

目前,我是这样做的:

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

有没有办法不用那么多重复自己?

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

部分是你可以避免重复使用 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

我认为好主意会得到应用"macro"

还有一点点其他情况,但我对我的过滤器选项卡这样做:

 <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 是在控制器上分配的变量

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