我Security
在我的 AppController 中使用该组件。我需要构建一个检查表单输入,以允许对列表中的每个项目进行自定义格式设置。为此,我$options
使用 foreach 处理集合中的每个项目并创建新元素,如下所示:
foreach ($fileTypes as $fileType_key => $fileType_value) {
echo $this->Form->input(
'FilesIncluded.' . $fileType_key,
array(
'type' => 'checkbox',
'value' => $fileType_key,
'label' => false,
'div' => false,
'before' => '<span class="checkbox clearfix"><span class="check">',
'after' => '</span><label for="add-product-check-sub-cat">' . $fileType_value . '</label></span>',
'hiddenField' => false,
)
);
}
有几点需要注意:
- 我将每个复选框设置为
data[FilesIncluded][{UUID}]
(其中 UUID 实际上代表 FilesIncluded 的 UUID)而不是data[FilesIncluded][]
- FilesIncluded 不是表单模型的一部分,因此它将显示为
$this->request->data
as$this->request->data['FilesIncluded']
而不是$this->request->data['Model']['column']
我想弄清楚的是为什么这会引发身份验证安全风险?当我将字段名称从更改为'FilesIncluded.' . $fileType_key
带有计数器的名称时'FilesIncluded.' . $count . '.id'
,它似乎可以正常工作而不会引发任何安全身份验证错误。任何想法如何使这项工作按我期望的方式工作?
更新:
另一个问题是能够维护一组固定的文件类型。例如,我希望能够控制可以从复选框中选择的 HABTM 记录。例如,我将显示这个列表: http ://cl.ly/image/0b1Q3C0d0w1Y
只有当用户选择记录时,它们才会被存储为 hasMany。然后,当需要进行编辑时,我不仅希望能够显示同一组记录,而且还希望将它们与用户保存的记录相关联。