2016-05-08 4 views
4

Ich würde einige Links zu verschiedenen Länderversionen in meiner bestehenden Website hinzufügen. Es funktioniert ganz gut, aber es ist ziemlich hässlich ^^Zweig-Links zur aktuellen Route, aber Gebietsschema ändern

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

Haben Sie eine Idee, es besser zu machen?

+3

Niemand Wenn Sie die Website besuchen, werden Sie sich darüber keine Sorgen machen. – malcolm

Antwort

6

Möglicherweise benötigen Sie dies auf vielen Seiten und/oder in mehreren Projekten. Hier ist eine Art und Weise, auf das, was ich habe in einigen benutze:

# app/config/config.yml 

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

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

Dann wird eine Schablone zum Halten Fahnen:

{# 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 %} 

Schließlich sind Fahnen in jeder Ansicht:

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

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

Sinnvoll das gleiche, aber das ist kein schlechter Weg. Danke. – rudak

+0

Ist es möglich, das Gleiche mit Silex zu tun? Ich habe keine config.yml Datei ... hier ist meine Frage (mit 50 Bounty): https://stackoverflow.com/questions/49055253/silex-allow-user-to-change-langage-by-clicking -on-html-Element-und-Keeping-cle –

Verwandte Themen