2012-03-13 93 views
12

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

回答

34

你可以得到.get('_route_params')merge他们你想要的locale的路径参数:

<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> 
+1

工程就像一个魅力! – Zagloo 2014-12-08 10:19:19

+0

我知道我们不应该对此一见钟情,但是......我爱你! – 2015-05-10 14:31:21

+0

非常感谢,这使我的一天 – 2016-02-04 03:06:48

相关问题