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

これが私の解決策です。Symfony2.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> 

これが私の解決策です。Symfony2.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 に答える