2015-07-09 2 views
0

Итак, в верхней панели навигации пользователь может выбрать язык. Оно работает. Это код: routing.ymlSymfony2 обновляет ту же страницу с другой локалью

homepage: 
    path: /{_locale} 
    defaults: { _controller: MpShopBundle:Homepage:index, "_locale": "es"} 
    requirements: 
     _locale: es|en 

веточка:

<li><a href="{{ path('homepage', {'_locale':'en'}) }}">EN</a></li> 
<li><a href="{{ path('homepage', {'_locale':'es'}) }}">ES</a></li> 

Теперь для этой проблемы. Допустим, пользователь добавил некоторые товары в корзину и обратился к странице корзины www.domain.com/cart/shopping-cart. Если он нажимает одну из ссылок, он перенаправляется на главную страницу индекса, и его язык изменяется.

Как я могу изменить свой код, так что, когда пользователь выбирает язык, он не перенаправляется на новую страницу, но та же страница обновляется с новой локалью.

Например:

Текущая страница: www.domain.com/cart/shopping-cart

после языка выберите: www.domain.com/cart/shopping-cart/en

и нет: www.domain.com/en

навигационной панели расширяется на все мои страницы. Поэтому мне нужно как-то получить текущий url и добавить к нему/en.

Я получаю URL вроде этого:

{% set currentPath = path(app.request.attributes.get('_route'), 
        app.request.attributes.get('_route_params')) %} 

Но как я могу добавить/ан участие в веточке?

+0

Вы проверили эту ссылку http://stackoverflow.com/questions/22086755/symfony2-use-default-locale-in-routing-one-url-for-one-language? – Robert

+0

Это не то, что я ищу. – Dominykas55

ответ

1

Я думаю, что этот блок кода отвечает на ваш вопрос:

<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}">English</a>

Взятые из this StackOverflow question.

Смежные вопросы