我想在新用戶註冊時發送電子郵件給管理員。我認爲我可以用兩種方法做到這一點。一種方法是使用事件,其他方法是使用afterSave。 通過使用活動 控制器代碼afterSave和yii2中的事件之間的區別?
public function actionCreate()
{
$model = new Registeration();
if ($model->load(Yii::$app->request->post()))
{
if($model->save())
{
$model->trigger(Registeration::EVENT_NEW_USER);
}
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
型號代碼
const EVENT_NEW_USER = 'new-user';
public function init(){
$this->on(self::EVENT_NEW_USER, [$this, 'sendMail']);
}
public function sendMail($event){
// code
}
我可以用afterSave
方法做同樣的
型號代碼
public function afterSave($insert)
{
//code
return parent::afterSave($insert);
}
那麼,有什麼區別在。。之間 兩種方法?哪一個更好使用Events
或afterSave()
?
從你的代碼的Registeration事件將在afterSave事件後調用;),但額外的事件處理的編碼風格是更好的,因爲你可以從延長你沒有附加事件的模型類。 – BHoft
@BHoft是註冊事件將在$ model-> save();之後被調用。是從我的部分PLZ解釋錯誤 – Bloodhound
沒有兩個是「正確的」,但您的附加事件是更好的編碼風格爲未來的目的。因此添加新事件是更好的解決方案。 – BHoft