2012-03-13 16 views
12

Używam gałązki do szablonów w wielojęzycznym projekcie Symfony2. Przełącznik języka jest dostępny w layout.html.twigprzełączanie języków bez zmiany bieżącej strony

Chcę, aby użytkownik mógł zmieniać języki bez zmiany bieżącej strony, klikając łącze do języka. Napisałem poniższy kod, który po prostu robi obowiązek dla stron statycznych. Ponieważ linki językowe prostu przekazać locale do trasy, w przypadku zaangażowania dodatkowych wymaganych parametrów, to oczywiście rzuca wyjątek: 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> 

Odpowiedz

34

można uzyskać parametry trasy z .get('_route_params') i merge im żądanej lokalizacji:

<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

działa jak urok! – Zagloo

+0

Wiem, że nie powinniśmy tego mówić od pierwszego wejrzenia, ale ... kocham cię! –

+0

Wielkie dzięki, które sprawiły, że mój dzień –

Powiązane problemy