validate()返回false但getErrors()返回一个空数组 - Yii

时间:2013-08-30 15:02:04

标签: php yii

我正在构建一个yii应用程序。下面是代码 - :

    $id = 2;

    $model = Page::model()->findByPk(2);
    $model->title = 'HeyMan';

    if($model->validate())
    {
        echo 'Validation retuned true';
    }
    else
    {
        $array = $model->getErrors();
        $message = 'Validation returned false';
    }

结果是validate()返回false,而getErrors()返回一个空数组。问题出在这里?感谢

3 个答案:

答案 0 :(得分:5)

您是否在模型中使用 beforeSave 功能?然后确保返回父节点之前保存:

return parent::beforeSave();

答案 1 :(得分:0)

可行的解决方案:

  1. 输入未验证。如果已配置,则模型中的规则数组 为了验证输入。从理论上讲,它可能是可能的 title被设置为仅为整数或类似的东西。你应该 看看你设定的规则。
  2. 模型问题。这很可能是因为您没有收到任何错误。模型中的所有函数都必须返回true,否则您将遇到这些问题。返回parent :: beforeSave()后,您需要返回,因为您的模型扩展了CActiveRecord,当您创建beforeSave()或beforeValidate()或afterSave()时,您将覆盖这些方法。

答案 2 :(得分:0)

我遇到了同样的问题。在表单提交后的控制器中,validate()返回false,而getErrors()返回一个空数组。我在模型中以错误的方式使用了beforeSave()方法。当我修复了beforeSave()的用法时,validatin和模型保存开始正常工作。

我的解决方案是:

// in the model class 

public function beforeSave($insert)
{
    // some code here ...

    return parent::beforeSave($insert);
}

不仅要调用返回parent :: beforeSave();

但是使用 $ insert 参数调用

像这样:返回parent :: beforeSave($ insert);