cakephp错误 - 验证显示两次

时间:2013-08-17 14:37:21

标签: php validation cakephp

我正在使用蛋糕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注册表并输入包含空格的用户名时,验证错误仅显示一次。有谁知道可能是什么问题?

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

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

  1. 我做了一个$this->Model->save()返回false(第一个 验证)
  2. 然后,为了显示验证错误,我做了 $this->Model->invalidFields()再次验证字段 (第二次)并返回消息
  3. 要解决此问题,我更改了$this->Model->invalidFields() to $this->Model->validationErrors以获取错误消息

答案 2 :(得分:0)

我也曾经遇到过这个问题。但是,在我的情况下,我发现虽然我在模型中编写了验证代码,但我在控制器中再次对其进行了验证,因为它显示了双重验证错误。如果您已完成相同操作,请删除

$this->Model->validates()

来自控制器。