39

次の簡単なコード:

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

現在のページがルートとclass="active"一致する場合に追加する簡単な方法はありますか?_list

テンプレートエンジンとしてsymfony2とtwigの最新のPRリリースを使用

4

10 に答える 10

102

Twig では条件を使用でき、Request オブジェクトはアプリケーション全体で使用できます。テンプレートを含める場合、使用するルートを取得するには:

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

render 関数を使用している場合は、以下を使用します。

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

これで、次を使用できるようになります。

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

またはそれより短い:

class="{{ app.request.get('_route') == '_list' ? 'active' }}"
于 2011-04-18T14:19:30.197 に答える
23

最短バージョン:

{% set route = app.request.get('_route') %}

 <li class="{{ route starts with 'post' ? 'open' }}"></li>
 <li class="{{ route starts with 'category' ? 'open' }}"></li>

時々役に立つ:

{% set route = app.request.get('_route') %}

<li class="{{ 'post' in route ? 'open' }}"></li>
<li class="{{ 'category' in route ? 'open' }}"></li>
于 2016-01-14T10:08:37.183 に答える
10

三項演算子の場合:

    {% set route = app.request.attributes.get('_route') %}
    <ul class="nav navbar-nav">
        <li {{ route ==  'profile_index' ? 'class="active"' }}><a href="{{ path('profile_index') }}"><i class="icon-profile position-left"></i> My Profile</a></li>
        <li {{ route ==  'influencers_index' ? 'class="active"'}}><a href="{{ path('influencers_index') }}"><i class="icon-crown position-left"></i> Influencers</a></li>
        <li {{ route ==  'task_manager_index' ? 'class="active"'}}><a href="{{ path('task_manager_index') }}"><i class="icon-alarm-check position-left"></i> Task Manager</a></li>
    </ul>
于 2015-11-18T23:01:44.140 に答える
3

このすべてを自動的に処理する非常に優れたバンドルを見つけました。

https://github.com/KnpLabs/KnpMenuBundle

于 2011-04-19T20:45:57.937 に答える
1

Twig の Symfony2.3 で、URI を取得するためにこれを試してください:

{{ dump(app.request.server.get("REQUEST_URI")) }}
于 2013-09-16T06:12:12.317 に答える
-1

これが私のやり方です(Symfony 2.6を使用)

<li {% if app.request.get('_route') == '_homepage' %} class="active" {% endif %}><a href="{{ path('_homepage') }}">Student</a></li>

'_homepage'バンドルのルートインの名前でrouting.yml、ルートは次のようになります

_homepage:
    path:     /
    defaults: { _controller: CoreBundle:Default:index }
于 2015-06-08T11:22:12.367 に答える