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」の場合、「fooParam」をパスに追加する必要があることを twig が認識できるようにする方法はありますか?

前もって感謝します!この投稿がお役に立てば幸いです。: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: pattern: /{language}/aloha defaults: { _controller: bundleStuff:Aloha:foo }

于 2012-09-13T07:41:26.373 に答える