Twig:如何防止在GET参数中对方括号进行编码

Twig:如何防止在GET参数中对方括号进行编码,twig,urlencode,square-bracket,Twig,Urlencode,Square Bracket,在my symfony页面中有一组复选框,因此它们具有相同的名称: <input type="checkbox" name="opt[]" value="1"> Option 1 <input type="checkbox" name="opt[]" value="2"> Option 2 ... 选项1 选择2 ... 我只选中一个框并提交,浏览器中的URL如下所示: 在我的树枝上,我有这样的指示: <link rel="canonical" href="{

在my symfony页面中有一组复选框,因此它们具有相同的名称:

<input type="checkbox" name="opt[]" value="1"> Option 1
<input type="checkbox" name="opt[]" value="2"> Option 2
...
选项1
选择2
...
我只选中一个框并提交,浏览器中的URL如下所示:

在我的树枝上,我有这样的指示:

<link rel="canonical" href="{{ app.request.uri }}">

在HTML源代码中,我有以下内容:

<link rel="canonical" href="https://localhost/list?opt%5B0%5D=1">

现在浏览器显示规范URL与当前URL不同

如何防止细枝对方括号进行编码?为什么他要在他们之间加一个0


关于

你为什么不切换到
POST
而不是
GET
?因为我正在从旧URL到新URL进行301重定向,所以我必须用GET发送参数,你看到的实际上是正确的(编码的)URL。您的浏览器实际上“欺骗”了您,使您认为
example.com/?foo[]=bar
是一个,而事实并非如此。您应该编写一个过滤器,从
app.request.uri
中删除查询字符串,以找到正确的规范URL。我明白了,谢谢:)一个简单的替换()解决了这个问题,但仍然无法找出显示的URL中为什么有0!因为您有一个名为
opt[]
的输入?如果浏览器没有添加索引,您将如何跟踪选中了这两个复选框中的哪一个?