我在多语言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>
答案 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>