我想在导航栏上有效地找到活动页面,以便为其应用不同的类。
目前,我这样做:
{% if app.request.get('_route') == 'route_name' %}
<li class="active">
{% else %}
<li>
{% endif %}
<a href="{{ path('route_name') }}">Link</a></li>
有没有办法在不重复自己的情况下做到这一点?
我正在考虑使用twig扩展来检查给定路由,但我没有找到在扩展代码中获取请求路由的方法。
答案 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 %}
答案 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是在控制器
分配的变量所以你可以用类似的方式组织你的案子