将新的 GET 参数与 Twig 中的当前路由合并

问题描述 投票:0回答:2

我有一个问题。我正在为具有过滤功能的产品列表创建一个视图文件。例如,我当前的网址是

mysite/category/electronics?p=1

在我的模板中,我有 a 标签来添加一些过滤条件。例如,当单击 a 时,我希望我的 uri 为

mysite/category/electronics?p=1&c=2

但我不知道通过当前uri(app.request.uri)为a标签生成href的最佳实践是什么,或者从路由生成uri(使用path()).....等待帮助!

symfony twig
2个回答
0
投票

假设您在路线名称上

product_show
我想说您应该使用
path()

path("product_show", { p : 1, c : 2, i : "another_parameter"})

PS:如果您有大量参数,您应该使用

url_encode
使其更具可读性。

参考:http://twig.sensiolabs.org/doc/filters/url_encode.html#url-encode

最后很高兴知道。

app.request.query.all
将为您提供当前网址中的所有当前查询参数。


0
投票

您可以使用 Symfony 提供的

app.request.query
和 Twig 的 merge 过滤器来添加新的查询参数,并在 Twig 模板中生成新的
path()
时保留现有的查询参数。对于您的用例来说,这可能看起来像这样:

<a href="{{ path('app_route_with_params', { app.request.query|merge({'c': '2'}) }) }}">click me</a>

重要的部分是:

app.request.query|merge({'c': '2'})
。如果查询字符串为
?p=1
,将呈现为
?p=1&c=2

© www.soinside.com 2019 - 2024. All rights reserved.