0

モデル A があるとしましょう。このモデル A は多くのコントローラーで使用されています。今は、モデル A を使用するコントローラーの 1 つだけに afterSave メソッドを実装したいと考えています。たとえば、コントローラ C では save() 関数を呼び出すので、afterSave をその関数でのみ呼び出す必要があります。

protected function afterSave()
{
    parent::afterSave();
    if($this->isNewRecord)
    {
        echo "hello";
        exit;
    }
}

理由: afterSave() は、モデル A を使用するすべてのコントローラーのすべての save() 呼び出しに影響します。

4

2 に答える 2

2

このためにafterSave()メソッドが必要になる理由がわかりません。アクションでは、$ model-> save()を呼び出しています。これを呼んだ後、あなたはあなたがしなければならないことをただすることができませんか?そのようです:

public function actionMyAction(){
    $model=new myModel;
    $model->attribute = 5;
    $model->save();
    $model->doLogicAfterSave(); //<-this
    $this->render('myView',array(
        'model'=>$model,
    ));
}

1台のコントローラー専用ですので。

于 2013-03-21T12:52:28.630 に答える
2

関数でこれを試すことができafterSaveます:

if (Yii::app()->controller->id!=='yourcontroller')
{
  // do what you want
}

必要に応じて、 の値をテストすることもできますYii::app()->controller->action->id

編集:またはJelle de Friesの回答をご覧ください。

于 2013-03-21T09:29:15.043 に答える