Подтвердить что ты не робот

Переключение языков без изменения текущей страницы

Я использую ветку для шаблонов в многоязычном проекте 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>
4b9b3361

Ответ 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>