2

我有一个带有几个选择输入的简单表单。其中之一是性别选择。

输入是这样生成的:

echo $this->Form->input('gender_id', array(
    'options' => array(
        1 => 'Male',
        2 => 'Female'
    )
));

如何确保只能提交给定的选择,从而无法提交 3 或其他内容?

我正在使用安全组件,它似乎可以防止字段名称被篡改,但不能防止值被篡改。

对于像州选择这样的较大选择列表,进行简单的比较是不切实际的。此外,我试图避免进行额外的查询来验证 id。

4

2 回答 2

1

要求值位于模型验证的指定列表中:

public $validate = array(
    'gender_id' => array(
      'allowed' => array(
      'rule'    => array('inList', array(1, 2)),
      'message' => 'Please select male or female.'
     )
   )
 );
于 2013-01-04T22:41:49.007 回答
0

使 DB 中的该字段成为允许值为 1 和 2的ENUM字段。

无法阻止有人提交第三个值,只需使用 FireBug 操作 DOM 或 POST 请求。如果它不是数据库值并且没有通过模型表单验证规则运行,则必须在控制器中手动执行。因为根据您的描述,只有这种验证是必要的。

于 2012-06-12T01:12:48.393 回答