Требуется задать класс .selected активному пункту меню, а так же снять ссылку.
Как это сделать правильно и лаконично (без JS)?
homepage:
path: /
defaults: { _controller: SiteAppBundle:Main:index }
download:
path: /download
defaults: { _controller: SiteAppBundle:Main:download }
entry:
path: /entry/{name}
defaults: { _controller: SiteAppBundle:Main:entry }
<li><a href="{{ path('homepage') }}">HOME</a></li>
<li><a href="{{ path('entry', {'name': 'info'}) }}">INFO</a></li>
<li><a href="{{ path('entry', {'name': 'settings'}) }}">SETTINGS</a></li>
<li><a href="{{ path('download') }}">DOWNLOAD</a></li>
UPD
Создал переменные в главном шаблоне:
{% set route = app.request.get('_route') %}
{% set entry = app.request.get('_route') == 'entry' ? app.request.get('_route_params').name : '' %}
Вынес меню в menu.html.twig и подключил его в главный шаблон.
Дальше обычная проверка через {% if %}
<li>{% if route == 'homepage' %}HOME{% else %}<a href="{{ path('homepage') }}">HOME</a>{% endif %}</li>
<li>{% if entry == 'info' %}INFO{% else %}<a href="{{ path('entry', {'name': 'info'}) }}">INFO</a>{% endif %}</li>
<li>{% if entry == 'settings' %}SETTINGS{% else %}<a href="{{ path('entry', {'name': 'settings'}) }}">SETTINGS</a>{% endif %}</li>
<li>{% if route == 'download' %}DOWNLOAD{% else %}<a href="{{ path('download') }}">DOWNLOAD</a>{% endif %}</li>
p.s. К сожалению, через расширение Twig использовать тест вот так:
{% if 'homepage' is is_page %}текущая страница "homepage"{% endif %}
не вышло
Как получить имя роута в расширении Twig (тест)?
Будет вариант еще короче, предлагайте =D
Всем спасибо!