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