我有一个简单的表单,有几个选择输入。其中之一是性别选择。
输入生成如下:
echo $this->Form->input('gender_id', array(
'options' => array(
1 => 'Male',
2 => 'Female'
)
));
如何确保只能提交给定的选择,从而无法提交 3 或其他内容?
我正在使用安全组件,它似乎可以防止字段名称篡改,但不能防止值篡改。
对于较大的选择列表(如状态选择),进行简单的比较是不切实际的。此外,我试图避免执行额外的查询来验证 id。
要求值位于模型验证的指定列表中:
public $validate = array(
'gender_id' => array(
'allowed' => array(
'rule' => array('inList', array(1, 2)),
'message' => 'Please select male or female.'
)
)
);
使数据库中的此字段成为允许值为 1 和 2 的 ENUM 字段。
你不能阻止某人提交第三个值,只需通过使用FireBug操纵DOM或POST请求。如果它不是数据库值,并且没有通过模型表单验证规则运行,则必须在控制器中手动执行此操作。因为根据您的描述,只有这种验证是必要的。