2013-03-12 36 views
5

有沒有辦法從樹枝中取代GET參數值?樹枝 - 動態替換GET參數的值

例如,我有一個網頁地址爲:

http://localhost/app_dev.php/test/?param1=40&sort=name 

而在我的樹枝我想建立3個鏈接是這樣的:

http://localhost/app_dev.php/test/?param1=40&sort=name 
http://localhost/app_dev.php/test/?param1=40&sort=address 
http://localhost/app_dev.php/test/?param1=40&sort=code 

現在我加入了「&排序「參數再次在URL的末尾,但這個解決方案實際上是一個」補丁「,它很糟糕!

<a href="{{app.request.requesturi}}&sort=address">address</a> 

在這個例子中我只有2個參數,但在現實中我有大約6個參數,因爲這是產生它的鏈接的通過提交獲得。

+0

我不明白這個問題。你能否詳細解釋一下? – Bart 2013-03-12 14:03:12

+0

好吧...我需要獲取當前的URL,然後替換現有參數的值。在提供的示例中,我想用「排序」 – 2013-03-12 14:04:50

回答

22

這應該解決您的問題:

{{ path(app.request.attributes.get('_route'), 
    app.request.query.all|merge({'sort': 'address'})) }} 

它得到當前的路由和合並所有查詢參數你想在追加之前更新的那個。

+2

謝謝!這解決了它:) – 2013-03-12 14:23:24

+0

太棒了!這解決了我的許多問題: – Rvanlaak 2014-06-20 07:39:53

+0

你...我喜歡你^^ – 2016-01-04 13:58:46

2

Symfony/Twig path函數接受可選參數。如果這些參數是路由的一部分,則它們由路由器處理,但如果它們不是,則它們作爲GET參數傳遞。

因此,如果您相應的路線,例如,my_route

<a href="{{ path('my_route', {'param1':40, 'sort':'address'}) }}">address</a> 
+0

的不同值重建URL,但如果我有6個參數的列表,該怎麼辦?我需要建立所有參數的鏈接?生成的鏈接是通過提交一個

... – 2013-03-12 14:08:46

+0

PéCé - 我編輯的問題更清晰。 – 2013-03-12 14:11:10

+0

@insertusername有你的答案。它保留請求參數並僅替換那些您想要更改的參數。 – AlterPHP 2013-03-12 14:18:35