我正在保存一个模型实例,在“beforeSave”模型函数中执行一些操作 我想在模型中添加一些错误/消息,然后将它们放入控制器并显示给用户 到目前为止,我有两个如何实现这一点的想法:
"addError": $this->addError("dummy"=>"my message");
中使用虚拟属性这不是最好的方法,因为我必须创建新的虚拟属性。 也许有内置的方式来做或扩展? 无论如何我该怎么做?
答案 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);
}