Symfony2在菜单中添加活动类

时间:2013-02-22 10:09:49

标签: php class symfony twig

{% for node in menu.nodes %}
<li><a href="{{ page_url(node,node.defaultParams) }}">{{ node.title }}</a></li>
{% endfor %}

是否有一种简单的方法可以为当前节点添加class =“active”? 感谢。

1 个答案:

答案 0 :(得分:2)

我倾向于用宏来解决它。它的工作原理如下(这里直接输入未经测试的代码):

{% macro menuitem(route, params, text) %}
{% set _url = path(route, params) %}
  <li{% if _url == app.request.requesturi %} class="current"{% endif %}>
    <a href="{{ _url }}">{{ text }}</a>
  </li>
{% endmacro %}

如果您现在生成的路线是用户请求的路线,此方法将添加当前类。

为了更简单的用法,请导入:{% from _self import menuitem %}

用法:{{ menuitem("blogpost", { "id": 1 }, "my first blogpost") }}

另请注意,我正在使用silex,其中当前请求可以通过app.request访问,在完整堆栈框架中不确定。