6

我一直在用谷歌搜索这个问题,但我找不到有同样问题的人......而且我不认为我是这里唯一的人>。<

让我们看看,我在 symfony2 中使用翻译。我需要为此使用树枝...问题是我需要 3 个链接,以便人们可以更改网站的语言。该链接必须重定向到用户所在的同一页面,但要更改“_locale”。

我首先想到的是这样的:

// in routing.yml
bundleStuff_someUrl:
    pattern:  /{_locale}/aloha
    defaults: { _controller: bundleStuff:Aloha:foo }

bundleStuff_fooUrl:
    pattern:  /{_locale}/foo/{fooParam}
    defaults: { _controller: bundleStuff:Foo:foo }

// in view.html.twig
<a href="{{ path((app.request.get('_route'), { '_locale': 'l1' }) }}">lang1</a>
<a href="{{ path((app.request.get('_route'), { '_locale': 'l2' }) }}">lang2</a>
<a href="{{ path((app.request.get('_route'), { '_locale': 'l3' }) }}">lang3</a>

当(在这种情况下)_route 是 fooUrl 时,问题就变成了......有没有办法将我在当前视图中的每个属性附加到我正在寻找的路径中?换句话说,参考这个例子:如果当前视图是'fooUrl',有没有办法让twig知道它必须将'fooParam'添加到路径中?

提前致谢!希望这篇文章有用!:D

4

2 回答 2

11

_route_paramsrequest 属性保存当前路由的参数。所以树枝代码是,

{% set route = app.request.get('_route') %}
{% set route_params = app.request.get('_route_params') %}

<a href="{{ path(route, route_params | merge({ '_locale': 'l1' })) }}">lang1</a>
<a href="{{ path(route, route_params | merge({ '_locale': 'l2' })) }}">lang2</a>
<a href="{{ path(route, route_params | merge({ '_locale': 'l3' })) }}">lang3</a>
于 2012-09-12T21:13:37.600 回答
1

对于 symfony 2.0,你可以在控制器中获取 _locale 变量,然后在发送变量之后。

例如

控制器:

    $language = $this->getRequest()->get('_locale'); 
    $this->$this->redirect($this->generateUrl('bundleStuff_someUrl', array('language' => $language)))

在 routing.yml 之后

bundleStuff_someUrl:模式:/{language}/aloha 默认值:{ _controller: bundleStuff:Aloha:foo }

于 2012-09-13T07:41:26.373 回答