添加活动类以链接到 sf2 和树枝

2022-08-30 12:18:21

以下简单代码:

<li><a href="{{ path('_list') }}">List</a></li>

有没有一种简单的方法来添加一个如果当前页面与路由匹配?class="active"_list

使用最新的 PR-Release 的 symfony2 和 twig 作为模板引擎


答案 1

Twig 允许条件,Request 对象在整个应用程序中都可用。如果要包括模板,要获取要使用的路由,请执行以下操作:

app.request.attributes.get('_route')

如果您使用的是渲染函数,则需要使用:

app.request.attributes.get('_internal')

有了这个,你应该能够使用:

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

或更短:

class="{{ app.request.get('_route') == '_list' ? 'active' }}"

答案 2

有时您不想对路线进行精确匹配。对于这些情况,您可以使用 twig 的“start with”条件逻辑。

例如,假设您正在处理书籍。您有以下路线:预订,book_show,book_new,book_edit。您希望为其中任何一种情况突出显示导航项“簿”。此代码将实现此目的。

<a class="{% if app.request.attributes.get('_route') starts with 'book' %}active{% endif %}">Books</a>
<a class="{% if app.request.attributes.get('_route') starts with 'author' %}active{% endif %}">Authors</a>

此示例至少适用于 Symfony 2.3.x


推荐