让我们说我有模特A ..然后这个模型A被许多控制器使用...... 现在我想实现afterSave方法,只在其中一个使用的控制器中实现 模特A.例如在Controller C中它调用了save()函数,所以我希望只在那个函数中调用afterSave。那是什么?
protected function afterSave()
{
parent::afterSave();
if($this->isNewRecord)
{
echo "hello";
exit;
}
}
因为:afterSave()影响使用模型A的所有控制器的所有save()调用
答案 0 :(得分:2)
您可以在afterSave
函数中尝试此操作:
if (Yii::app()->controller->id!=='yourcontroller')
{
// do what you want
}
如果需要,您还可以测试Yii::app()->controller->action->id
的值。
编辑:或者看一下 Jelle de Fries 的答案。
答案 1 :(得分: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个控制器。