Symfony2 使用不同的语言环境刷新同一页面

Dom*_*s55 1 php jquery symfony

因此,在顶部导航栏中,用户可以选择一种语言。有用。这是代码:routing.yml

homepage:
  path: /{_locale}
  defaults: { _controller: MpShopBundle:Homepage:index, "_locale": "es"}
  requirements:
         _locale: es|en
Run Code Online (Sandbox Code Playgroud)

枝条:

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

现在的问题。假设用户将一些产品添加到购物车并访问了购物车页面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 添加到其中。

我得到这样的网址:

{% set currentPath = path(app.request.attributes.get('_route'),
                     app.request.attributes.get('_route_params')) %}
Run Code Online (Sandbox Code Playgroud)

但是如何在树枝中添加 /en 部分?

Rik*_*ijs 5

我认为这个代码块回答了你的问题:

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

取自这个 StackOverflow 问题