2012-09-12 58 views
7

我一直在谷歌這個問題,但我找不到任何人有我的同樣的問題......我不認爲我是唯一的這裏>。 <在symfony2中用樹枝添加屬性到路徑請求

讓我們來看看,我正在使用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'添加到路徑中?

提前致謝! 希望這篇文章很有用! :D

回答

12

_route_params request屬性保存當前路由的參數。所以樹枝代碼會是這樣,

{% 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> 
+1

請注意,此_route_params屬性僅在Symfony 2.1中可用。如果您使用2.0,您可以使用如下所述的自定義分支擴展:http://htmlpurifier.org/docs/enduser-utf8.html –

+0

對不起,錯誤的網址。正確的是http://stackoverflow.com/questions/9378714/get-current-url-in-twig-template –

+0

Uo!感謝你們倆! :D 我會在家嘗試這個,告訴你什麼。 Thx太多了! – ThisIsErico

2

爲symfony1.2 2.0喲可以在控制器和一個變量發送後得到_locale變量。

例如

控制器:

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

和之後的routing.yml

bundleStuff_someUrl: 圖案:/ {語言}/ALOHA 默認:{_controller:bundleStuff:阿羅哈: foo}