cakepp错误-显示两次验证


cakephp errors - validation displayed twice

我使用的是cake 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'
        )
    ) );

现在奇怪的是,在我的网站上,当我输入一个有空格的用户名时,验证会显示两次。但是,当我使用家庭登记表并输入带有空格的用户名时,验证错误只显示一次。有人知道问题出在哪里吗?

通常这是因为验证会被触发两次。如果没有看到更多的代码(尤其是涉及的控制器、组件、行为和模型),很难判断是什么导致它被触发两次。

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

它也可能是由第三方组成部分或行为或其他原因引发的。。。您需要进行一些调试。

在我的情况下,这是因为在控制器中:

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

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

我也遇到过一次这个问题。但是,在我的案例中,我发现,尽管我在模型中编写了验证代码,但我在控制器中再次验证了它,因为它显示了双重验证错误。如果你也这样做了,那么删除

$this->Model->validates()

来自控制器。