2013-03-21 31 views
0

假設我有模型A ..然後這個模型A正在被許多控制器使用... 現在我想執行afterSave方法,只在使用 模型A的控制器之一。例如在控制器C中,它調用save()函數,所以我希望afterSave只在該函數中被調用。是這樣嗎?如何實現afterSave方法到一個特定的控制器動作只?

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

,因爲:afterSave()影響所有控制器的所有存儲()調用使用A型

回答

2

你可以在你試試這個afterSave功能:如果需要

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

,你也可以測試Yii::app()->controller->action->id的值。

編輯:或看看Jelle de Fries回答。

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個控制器。

相關問題