我有一个问题。我正在为具有过滤功能的产品列表创建一个视图文件。例如,我当前的网址是
mysite/category/electronics?p=1
在我的模板中,我有 a 标签来添加一些过滤条件。例如,当单击 a 时,我希望我的 uri 为
mysite/category/electronics?p=1&c=2
。
但我不知道通过当前uri(app.request.uri)为a标签生成href的最佳实践是什么,或者从路由生成uri(使用path()).....等待帮助!
假设您在路线名称上
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
将为您提供当前网址中的所有当前查询参数。
您可以使用 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
。