5

「beforeSave」モデル関数でいくつかのアクションを実行するモデル インスタンスを保存しています。
モデルにいくつかのエラー/メッセージを追加してから、それらをコントローラーに入れてユーザーに表示したいと考えています。
これまでのところ、これを実装する方法について2つのアイデアがあります。

  • 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 に答える