2016-05-08 3 views
4

既存のウェブサイトのdifferentsロケールバージョンへのリンクを追加します。それはかなりうまく動作しますが、それはかなり醜いです^^Twigが現在のルートにリンクしていますが、ロケールを変更しています

<li> 
    <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({_locale: 'es'}))) }}"> 
     <img src="{{ asset('img/flags/es.jpg') }}" alt="es"> 
    </a> 
</li> 
<li> 
    <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({_locale: 'fr'}))) }}"> 
     <img src="{{ asset('img/flags/fr.jpg') }}" alt="fr"> 
    </a> 
</li> 

あなたはそれをより良くするアイデアはありますか?

+3

ノーバディ:

{# app/Resources/views/includes/_flags.html.twig #} {% set route = app.request.attributes.get('_route') %} {% set route_params = app.request.attributes.get('_route_params') %} {% set params = route_params|merge(app.request.query.all) %} {# You may want to not print a flag/link for current view, the "if" here let you handle it #} {% for locale in locales if locale != app.request.locale %} <li> <a href="{{ path(route, params|merge({ _locale: locale })) }}"> <img src="{{ asset('img/flags/' ~ locale ~ '.jpg') }}" alt="{{ locale }}"> </a> </li> {% endfor %} 

は、最後に任意のビューのフラグを含めますウェブサイトを訪問すると、それを見て、心配しないでください。 – malcolm

答えて

6

多くのページや複数のプロジェクトで必要になる場合があります。ここで私はいくつかの中で使用してきたものに基づいて可能な方法があります:

# app/config/config.yml 

# ... 
parameters: 
    # ... 
    app_locales: [en, es, fr] 

twig: 
    # ... 
    globals: 
     locales: %app_locales% 
     # ... 

その後フラグを保持するためのテンプレート:

{# app/Resources/views/base.html.twig #} 

{% include 'includes/_flags.html.twig' %} 
+0

賢明には同じことだが、悪いことではない。どうも。 – rudak

+0

シレックスでも同じことができますか?私はconfig.ymlファイルを持っていない...ここに私の質問です(50バウンティ):https://stackoverflow.com/questions/49055253/silex-allow-user-to-change-langage-by-clicking -on-html-element-and-keeping-cle –

関連する問題