CakePHP:如何发送 $_GET 参数,如 id[]=1&id[]=2&id[]=3

CakePHP: How to send $_GET params like id[]=1&id[]=2&id[]=3

当有以下代码时:

<?= $this->Html->link('Foobar', ['?' => ['id' => [1, 2, 3]]] ?>

输出如下:

…id%5B0%5D=1&amp;id%5B1%5D=2&amp;id%5B2%5D=3
  1. 如何在没有像 0、1、2 这样的数组索引的情况下获得(更常用的)语法。
  2. %5B和[有区别吗? (是的,我知道,它被 url 转义了)

你试过吗?

<?= $this->Html->link('Foobar', ['?' => ['id' => ['1,2,3']]] ?>

我认为您尝试其他方式没有多大意义。只需在服务器端对字符串进行 explode() 操作,你的数组就会变得不那么乱七八糟,而且很长 URL.

猜想您正在尝试,或者至少看起来是这样,通过发送表单数据得到。很明显,HtmlHelper 的默认 link (它是 link 而不是表单!)方法不会 这样做,因为您必须指定重复数组键。

尝试使用 FormHelper::postLink() 方法并将方法设置为 get。如果这不起作用,请扩展 Form 或 HtmlHelper 并通过重载方法或添加新方法来实现您需要的内容。

看起来,CakePHP 正在内部使用 php 的 http_build_query 方法。如官方文档中所述,此方法输出以下格式的数组:

…id%5B0%5D=1&amp;id%5B1%5D=2&amp;id%5B2%5D=3