2013-08-17 60 views
2

我使用的是蛋糕2.3.8版本。我有一个注册表格,用户可以在表格中输入用户名和密码。 我的模型验证的样子:cakephp错误 - 验证显示两次

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当我与它空间的用户名输入,显示两次验证。但是,当我使用家庭注册表单并输入包含空格的用户名时,验证错误只显示一次。有谁知道可能是什么问题?

+0

没有您的视图代码,不可能说(wat ...'这个网站最适用于Internet Explorer 9或更高版本。) – AD7six

回答

4

通常这是因为验证触发两次。究竟是什么导致它被触发两次很难说没有看到更多的代码(特别是涉及的控制器,组件,行为和模型)。

检查您是否可能手动调用Model::validates(),除了由模型保存操作触发的验证,或者您甚至可以手动调用它两次。

它也可能由第三方组件或行为或任何其他触发...您需要做一些调试。

3

在我的情况发生,因为在控制器:

  1. 我做了$this->Model->save()其返回false(第一 验证)
  2. 然后,以示我做 $this->Model->invalidFields()这再次验证字段的验证错误 (第二次)并返回消息

要修复它,我更改了$this->Model->invalidFields() to $this->Model->validationErrors以获取错误消息

0

我也有这个问题一次。但是,就我而言,我发现尽管我在模型中编写了验证代码,但我在控制器中再次验证了它,因为它显示了双验证错误。如果您完成了相同的操作,请从控制器上删除

$this->Model->validates()