从菜单中找到我所在的项目路线
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%}"
我目前正在开发 Symfony 4.4 网络应用程序。
我的应用程序的管理员可以更改菜单,因此 table 具有以下属性:
因为我得到了带有一些参数的路由(例如:一个 slug 或一个 id,而且 slug 可以改变,所以它不是一个很好的标识符)。
问题是我想知道我在哪个菜单项上,以保持菜单打开(在
我试过的:
用类似的东西识别路线:
<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%}"