5

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

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

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

4

2 回答 2

7

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

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

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

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

于 2012-04-25T18:08:39.440 回答
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);
}
于 2012-04-25T17:18:21.093 回答