我正在尝试获取一个列表,以突出显示它是否位于当前页面(路径)。但是,我也在页面中有子页面,我也希望列表突出显示。
我有我的菜单if语句:
<ul class="menu">
{% if app.request.get('_route') == 'home' %}
<li class="current"><a href="{{ path('home')}}">Home</a></li>
{% else %}
<li><a href="{{ path('home')}}">Home</a></li>
{% endif %}
{% if app.request.get('_route') == 'reports' %}
<li class="current"><a href="{{ path('reports') }}">Reports</a></li>
{% else %}
<li><a href="{{ path('reports') }}">Reports</a></li>
{% endif %}
// etc etc
现在在我的报告页面中,路线是/ reports /我有一个菜单,点击&#34;详细信息&#34;,&#34;摘要&#34;等等,它将转到/ reports / detail和/ reports / summary ...我想要它,以便当用户点击这些链接时,主导航仍然会突出显示。
我想知道是否存在类似这样的if语句:
{% if app.request.get('_route') starts with(?) 'reports' %}
因此,每当有人进入/ reports /的子页面时,&#34;报告&#34;菜单中的li仍然会突出显示?
答案 0 :(得分:3)
我不确定twig是否具有“以...开头”的功能,但您可以使用in
检查遏制
{% if 'reports' in app.request.get('_route') %}
答案 1 :(得分:0)
只是用当前信息更新此问题。 根据当前(2.x)Twig文档,这可能是它所要求的方式。 更具体地说,the documentation表示:
您还可以检查字符串是否以另一个字符串开头或结尾:
{% if 'Fabien' starts with 'F' %}
{% endif %}
{% if 'Fabien' ends with 'n' %}
{% endif %}
因此,所需的表达是完全可能的:
{% if app.request.get('_route') starts with 'reports' %}
按预期工作。
答案 2 :(得分:0)
此线程上有一些不错的选择,但另一个选择是将路由传递到数组中。如果您有下拉菜单项,这将很有用。
数组中的项目将是您定义的路线。
sudo udevadm control --reload
然后在菜单栏中将其添加到菜单标签类。
{% set routes = {
'activities':
[
'walking',
'swimming',
'running'
]
} %}