语言切换而不改变当前页面

时间:2012-03-13 02:00:00

标签: symfony

我在多语言Symfony2项目中使用twig进行模板化。 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 个答案:

答案 0 :(得分:35)

您可以使用所需的区域设置.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>