symfony Twig -动态替换GET参数的值

5t7ly7z5  于 2023-04-07  发布在  其他
关注(0)|答案(3)|浏览(142)

有没有一种方法可以替换twig中的GET参数值?
例如,我在这个地址有一个页面:

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

在我的wig中,我想建立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的末尾再次添加了“&sort”参数,但这个解决方案实际上是一个“补丁”,它很糟糕!

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

在这个例子中,我只有2个参数,但实际上我有大约6个参数,因为生成的链接是通过提交一个。

olmpazwi

olmpazwi1#

这可以解决你的问题:

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

它获取当前路由和所有查询参数,这些参数在追加之前与您想要更新的参数合并。

xqkwcwgp

xqkwcwgp2#

Symfony/Twig path函数接受可选参数。如果这些参数是路由的一部分,则由路由器处理,但如果不是,则将其作为GET参数传递。
因此,如果对应的路由是my_route

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

qojgxg4l3#

如果你的路由有参数(如/blog/post/{slug}),你想自动检索它们,你的path()应该像这样,扩展@insertusernamehere答案:

<a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'sort':'address')})) }}">address</a>

要保留所有查询参数并替换所需的参数,请连接merge s:

<a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all)|merge({'sort':'address')})) }}">address</a>

此代码已经过测试与Symfony 5.4/6.2上的小枝3.

相关问题