在symfony的导航栏上从base.html.twig中激活一个链接


Make a link active from the base.html.twig on Navbar in symfony

我在stack和其他资源上研究了很多东西。我发现了一些有趣的想法,但不能应用它们,因为我是一个学生,还不知道在哪里把东西直接放在正确的位置。

这段代码就在base。html。twig

<ul class="nav navbar-nav">
                    <li class="active">
                        <a href="{{ path('book_index') }}">Accueil<span class="sr-only">(current)</span></a>
                    </li>
                    <li><a href="{{ path('book_ourBooks') }}">Nos livres</a></li>
                    <li><a href="{{ path('book_aboutUs') }}">Être édité</a></li>
                </ul>

,我想,不使用Jquery,能够显示活动时,我点击一个链接,并进入该页面。

我找到了这样的代码:

class="{% if app.request.attributes.get('_route') == '_list' %}active{% endif %}"

(和其他看起来几乎相似的东西)但我真的不知道如何和在哪里把它与我自己的链接等等。如果有任何帮助,我将非常感激,谢谢:)

ps:我正在使用symfony 2.8

您需要像这样在li's上插入代码:

           <ul class="nav navbar-nav">
                <li class="{% if app.request.attributes.get('_route') == '_RouteName' %}active{% endif %}">
                    <a href="{{ path('book_index') }}">Accueil<span class="sr-only">(current)</span></a>
                </li>
                <li class="{% if app.request.attributes.get('_route') == '_RouteName' %}active{% endif %}">
                 <a href="{{ path('book_ourBooks') }}">Nos livres</a>
                </li>
                <li class="{% if app.request.attributes.get('_route') == '_RouteName' %}active{% endif %}">
                <a href="{{ path('book_aboutUs') }}">Être édité</a>
                </li>
            </ul>

_RouteName替换为正确的_route

我知道这个问题已经得到了回答,但我发现了一种不同情况下的整洁方法,可能会帮助像我这样有子菜单的人:

您可以在

中搜索字符串中的子字符串。
{# returns true #}
{{ 'ca' in 'car' }}

我对我的路线和导航做了什么使链接活跃

<li>
    <a href="{{ url('admin_agency_index') }}"
       class="{% if 'admin_agency_' in app.request.attributes.get('_route') %}active{% endif %}">
        <i class="lnr lnr-apartment"></i>
          <span>Agencies</span>
    </a>
</li>

我的代理路由命名如下:

  • admin_agency_new
  • admin_agency_edit
  • admin_agency_delete

在这种情况下,如果您到达添加代理的子菜单,您的html中仍然会有活动类。