2

我正在使用蛋糕 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'
        )
    ) );

现在奇怪的事情是在我的站点中,当我输入带有空格的用户名时,验证会显示两次。但是,当我使用家庭注册表并输入带有空格的用户名时,验证错误只显示一次。有谁知道可能是什么问题?

4

3 回答 3

4

在我的情况下,它发生是因为在控制器中:

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

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

于 2014-10-07T18:23:23.970 回答
4

通常这是因为验证被触发了两次。如果不查看更多代码(尤其是涉及的控制器、组件、行为和模型),很难判断它被触发两次的确切原因。

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

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

于 2013-08-17T15:26:39.467 回答
0

我也遇到过这个问题。但是,就我而言,我发现,虽然我在模型中编写了验证代码,但我在控制器中再次验证了它,因为它显示了双重验证错误。如果你做了同样的事情,然后删除

$this->Model->validates()

从控制器。

于 2015-04-06T15:22:32.660 回答