3

Symfony2 内置了一个多语言网站。在基本布局中,有这样的语言切换:

<a href="{{ path(app.request.attributes.get('_route'), {_locale: 'en'}) }}">EN</a>
<a href="{{ path(app.request.attributes.get('_route'), {_locale: 'fr'}) }}">FR</a>

这可以在不更改当前页面的情况下很好地切换语言。但是,如果有其他参数,它会因为“缺少强制参数”而引发异常。如何克服这一点?

4

2 回答 2

3

您可以执行以下操作:

<a href="{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'_locale': 'en'})) }}">EN</a>
<a href="{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'_locale': 'fr'})) }}">FR</a>

这样做是将 _locale 参数与现有查询参数合并。

于 2012-06-26T09:11:29.570 回答
2

这是我的解决方案,使用 Symfony 2.2 到 2.5

<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}">English</a>
<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}">Français</a>
<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'es'})) }}">Español</a> 

这是我的解决方案,使用 Symfony 2.0 到 2.1

<a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}">English</a>
<a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'fr'})) }}">Français</a>
<a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'es'})) }}">Español</a> 
于 2012-08-22T18:34:01.970 回答