Intereting Posts
Как отправить электронное письмо с помощью php-скрипта? Как отправить запрос curl с сертификатом pem через PHP? Вызов JavaScript с PHP получить следующий и предыдущий день с PHP Разделить данные на 3 столбца Двустороннее шифрование: мне нужно хранить пароли, которые можно получить Как вызвать переадресацию до завершения php-скрипта? Как загрузить ответ запроса ajax (jquery) постепенно, не дожидаясь его завершения? Нужно писать XML с помощью PHP – как? SQL / PHP: получить все результаты в течение времени от X до Y и определить, есть ли промежутки времени между ними Отображение значения из базы данных в динамически созданное текстовое поле в таблице с помощью jQuery Таймер, часовой пояс, время на стороне сервера, обратный отсчет клиентской стороны Как вызвать макет по умолчанию в ZF2 для всех модулей или выбранных модулей? Как автоматически регистрировать класс помощников в ServiceProvider? Предотвращать отправку писем, обрабатываемых как нежелательные письма, используя функцию php mail

добавить активный класс для связи с sf2 и веточкой

следующий простой код:

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

есть ли простой способ добавить class="active" если текущая страница соответствует маршруту _list ?

используя новейший PR-релиз symfony2 и twig в качестве механизма шаблонов

Solutions Collecting From Web of "добавить активный класс для связи с sf2 и веточкой"

Twig допускает условные обозначения, а объект Request доступен во всем приложении. Если вы включили шаблон, чтобы получить маршрут, который вы хотите использовать:

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

Если вы используете функцию рендеринга, вы хотите использовать:

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

При этом вы сможете использовать:

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

Иногда вы не хотите выполнять точное сопоставление маршрута. В этих случаях вы можете использовать условную логику ветви «начинается с».

В качестве примера предположим, что вы работаете с книгами. У вас есть следующие маршруты: book, 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

С тройным оператором:

  {% 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> 

Самая короткая версия:

 {% 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> 

я нашел очень хороший Bundle, который автоматически обрабатывает все это:

https://github.com/KnpLabs/KnpMenuBundle

SF2.2

 {{ dump(app.request.server.get('PATH_INFO')) }} 

Symfony2.3, в Twig, попробуйте это, чтобы получить uri:

 {{ dump(app.request.server.get("REQUEST_URI")) }} 

Вот как я это делаю (используя 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 } 

class = "class_name {% if loop.index0 == 0%} CLASSNAME {% endif%}"