Переключение языков без изменения текущей страницы
Я использую ветку для шаблонов в многоязычном проекте Symfony2. В layout.html.twig есть языковой коммутатор
Я хочу, чтобы пользователь мог переключать языки без изменения текущей страницы, нажав ссылку на язык. Я написал следующий код, который просто выполняет статичные страницы. Поскольку языковые ссылки просто передают маршрут locale
на маршрут, в случае привлечения дополнительных требуемых параметров он явно выдает исключение: route has some missing mandatory parameters
<ul id="lang">
<li><a href="{{ path(app.request.attributes.get('_route'), {_locale: 'az'}) }}">AZ</a></li>
<li><a href="{{ path(app.request.attributes.get('_route'), {_locale: 'en'}) }}">EN</a></li>
</ul>
Ответы
Ответ 1
Вы можете получить параметры маршрута с помощью .get('_route_params')
и merge их с желаемым языком:
<ul class="lang-menu">
<li><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'ca'})) }}">Català</a></li>
<li><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'}))}}">English</a></li>
</ul>