我正在使用蛋糕2.3.8版本。我有一个注册表单,用户可以在表单中输入用户名和密码。 我的模型验证如下:
public $validate = array(
'username' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A username is required'
),
'alphanumeric' => array(
'rule' => 'alphaNumeric',
'message' => 'Usernames must only contain letters and numbers.'
)
),
'password' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A password is required'
)
) );
现在奇怪的是my site当我输入带有空格的用户名时,验证会显示两次。但是,当我使用Family注册表并输入包含空格的用户名时,验证错误仅显示一次。有谁知道可能是什么问题?
答案 0 :(得分:4)
通常这是因为验证被触发两次。如果没有看到更多的代码(特别是涉及的控制器,组件,行为和模型),很难说它究竟是什么导致它被触发两次。
检查您是否可能手动调用Model::validates()
,此外还有模型保存操作触发的验证,或者您甚至可能手动调用它两次。
它也可能由第三方组件或行为或其他任何东西触发......您需要进行一些调试。
答案 1 :(得分:3)
在我的情况下,它发生的原因是在控制器中:
$this->Model->save()
返回false(第一个
验证)$this->Model->invalidFields()
再次验证字段
(第二次)并返回消息要解决此问题,我更改了$this->Model->invalidFields() to $this->Model->validationErrors
以获取错误消息
答案 2 :(得分:0)
我也曾经遇到过这个问题。但是,在我的情况下,我发现虽然我在模型中编写了验证代码,但我在控制器中再次对其进行了验证,因为它显示了双重验证错误。如果您已完成相同操作,请删除
$this->Model->validates()
来自控制器。