从菜单中找到我所在的项目路线

Find on which item route from the menu I am

我目前正在开发 Symfony 4.4 网络应用程序。

我的应用程序的管理员可以更改菜单,因此 table 具有以下属性:

因为我得到了带有一些参数的路由(例如:一个 slug 或一个 id,而且 slug 可以改变,所以它不是一个很好的标识符)。

问题是我想知道我在哪个菜单项上,以保持菜单打开(在

  • 项上添加活动 class)但我找不到方法好好做。

    我试过的:

    用类似的东西识别路线:

    <li>{% if app.request.get('_route') == 'foo_products_overview' and app.request.get('slug') in ["entityslug"] %} class="active" {% endif %}></li>
    

    但是我的应用程序的每个路由的参数都不相同(多个实体使用 id 或 slug 找到一个)。

    这是我的菜单项的显示方式:

    {% if child2.getMenuItems()|length > 0 %}
        <ul class="collapse nav-sub" aria-expanded="false">
            {% for child3 in child2.getMenuItems() if child2.getMenuItems()|length > 0 and child3.level == 4 and (is_granted(child3.roles) or child3.roles is empty) %}
                <li class="{% if child3.getMenuItems()|length > 0 %}nav-dropdown{% endif %}">
                    <a class="{% if child3.getMenuItems()|length > 0 %}has-arrow{% endif %}"
                        href="{% if child3.route is not null %}{% if child3.routeParameters %}{{ path(child3.route, {'id': child3.routeParameters}) }}{% else %}{{ path(child3.route) }}{% endif %}{% else %}#{% endif %}"
                        aria-expanded="false">
                        <span>{% if "ROLE_ADMIN" in child3.roles %}<i class="la la-eye-slash text-danger mr-2"></i>{% endif %}{{ child3.name|raw }}</span>
                   </a>
               </li>
            {% endfor %}
         </ul>
      {% endif %}
    

    你遇到过这个问题吗?

    也许 KnpMenu 有办法? (https://symfony.com/bundles/KnpMenuBundle/current/index.html)暂时不用

  • 你试过这个吗:用你的变量名替换“child.id”,我认为那是“child3.id”但不确定。

    class="{% if app.request.attributes.get( '_route' ) starts with 'foo_products_overview' and app.request.attributes.get('id') == child.id %}active{% endif%}"