5

我正在构建一个 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() 返回一个空数组。这里有什么问题?谢谢

4

3 回答 3

7

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

return parent::beforeSave();
于 2013-08-30T16:03:58.557 回答
0

可能的解决方案:

  1. 输入不验证。如果为了验证输入而配置了模型中的规则数组。从理论上讲,标题可能设置为仅整数或类似的东西。你应该看看你设定了什么规则。
  2. 模型问题。这更有可能是因为您没有收到任何错误。模型中的所有函数都必须返回 true,否则您会遇到此类问题。就 return parent::beforeSave() 而言,您需要返回它,因为您的模型扩展了 CActiveRecord 并且当您创建 beforeSave() 或 beforeValidate() 或 afterSave() 时,您将覆盖这些方法。
于 2016-03-08T08:49:22.517 回答
0

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

我的解决方案是:

// in the model class 

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

    return parent::beforeSave($insert);
}

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

但使用 $insert 参数调用

像这样:return parent::beforeSave($insert);

于 2018-04-02T08:19:25.627 回答