Yii自定义模型错误

时间:2012-04-25 13:00:15

标签: php yii

我正在保存一个模型实例,在“beforeSave”模型函数中执行一些操作 我想在模型中添加一些错误/消息,然后将它们放入控制器并显示给用户 到目前为止,我有两个如何实现这一点的想法:

  • 在ActiveRecord函数"addError": $this->addError("dummy"=>"my message");中使用虚拟属性这不是最好的方法,因为我必须创建新的虚拟属性。
  • 将新属性“custom_errors”添加到模型和函数“addCustomErrors”

也许有内置的方式来做或扩展? 无论如何我该怎么做?

2 个答案:

答案 0 :(得分:6)

您可以使用addError(),但不需要编写虚假属性。如果错误与模型本身的任何无关,那么你做错了什么:p

所以在你的情况下它会是这样的:

 $this->addError('file', 'Something happened I wasn\'t pleased with');

如果file属性上有任何其他错误,它们将会重叠,因此您无需担心覆盖。

答案 1 :(得分:2)

我没有在这里看到问题。只需使用addError()http://www.yiiframework.com/doc/api/1.1/CModel#addError-detail即可。即使在调用save()之后,该模型仍然保留,因此您可以执行类似

的操作
yourController()
{
   do_something();
   do_something();
   $model->save();
   $errors[]=do_what_you_have_to_do_to_define_the_errors_which_will_be_added();
   $model->addError(attribute, $errors);
   $this->render(viewWhereTheErrorWillBeDisplayed, $model);
}