使用cakephp 2.0 rc3。
在我的模型中验证后:
var $validate = array(
'loginname' => array(
'minCharactersRule' => array(
'rule' => array('minLength', 3),
),
'alphaNumericRule' => array(
'rule' => 'alphaNumeric',
),
'uniqueRule' => array(
'rule' => 'isUnique',
),
'on' => 'create',
'required' => true,
'allowEmpty' => false,
),
'password' => array(
'minCharactersRule' => array(
'rule' => array('minLength', 5),
),
'required' => true,
'allowEmpty' => false,
),
'email' => array(
'emailRule' => array(
'rule' => array('email'),
),
'uniqueRule' => array(
'rule' => 'isUnique',
),
'required' => true,
'allowEmtpy' => false,
),
'display_name' => array(
'betweenRule' => array(
'rule' => array('between', 3, 20),
),
'uniqueRule' => array(
'rule' => 'isUnique',
),
'required' => true,
'allowEmpty' => false,
),
'registered' => array(
'rule' => array('date', 'ymd'),
'required' => false,
'allowEmpty' => false,
'on' => 'create'
),
'status' => array(
'rule' => 'numeric',
'required' => false,
'allowEmpty' => false,
'on' => 'create'
),
);
当我填写每个字段并提交我收到“必填”错误消息时... debug($ this-> Model-> validationErrors)说:
Array(
[loginname] => Array
(
[0] => required
)
[password] => Array
(
[0] => required
)
[email] => Array
(
[0] => required
)
[display_name] => Array
(
[0] => required
))
此外还出现了一些丑陋的警告:
Warning (2): preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash [CORE/Cake/Model/Model.php, line 2981]
(4次)
当我第一次看到它时,我以为我错误地输入了任何内容,但在检查3-4次并得到相同的错误后,我决定来这里问:x 我错过了什么吗?耗尽了想法......
nahri
答案 0 :(得分:0)
再次阅读食谱示例后,我找到了解决方案。
每条规则都必须包含required,allowEmpty等参数,而不是字段本身。
这对我来说没有任何意义,但这就是手册中的描述以及它是如何工作的。
答案 1 :(得分:-1)
required => true
与验证规则notEmpty()
的含义不同。 required => true
表示必须存在数组键 - 这并不意味着它必须具有值。因此,如果数据集中不存在该字段,则验证将失败,但如果提交的值为空('')
,则可能(取决于规则)成功。
因此,在您的情况下,您可以注释掉所有required => true
,并且一切都应该没问题。