2013-03-12 64 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