我有什么
foreach ($statuses as $key=>$value) {
echo $this->Form->control('Filter.statuses['.$key.']', array(
'type' => 'checkbox',
'value' => $key,
'label' => $value,
));
}
我得到了什么
开机自检数据中出现意外字段"过滤器状态[1"
开机自检数据中出现意外字段"过滤状态[2"
开机自检数据中出现意外字段"过滤器状态[3" ...
我试过什么
$this->Form->unlockField('Filter.statuses');
$this->Form->unlockField('Filter.statuses[]');
如果我删除Filter.
前缀,错误就会消失,我不再需要unlockField()
调用。
引用
- 在 cakephp 3 中,我收到错误 POST 数据中的意外字段
- CakePHP 3 上 POST 数据中的意外字段"g-recaptcha-response"
- https://book.cakephp.org/3.0/en/controllers/components/security.html
您不应该在字段名称中使用括号,表单帮助程序不支持这一点。如果需要表单帮助程序不支持的非常规名称,请使用 name
选项指定它,同时将兼容的字段名称传递给 control()
方法的第一个参数。
一直使用点语法:
echo $this->Form->control("Filter.statuses.$key", /* ... */);
这样,表单帮助程序将能够保护字段,并创建正确的 HTML 名称属性值,如 Filter[statuses][1]
。