yii2中余波和事件之间的区别?

yii2中余波和事件之间的区别?,yii2,yii-events,Yii2,Yii Events,我想在新用户注册时向管理员发送电子邮件。我想我可以用两种方法。一种方法是使用事件,另一种方法是使用afterSave。 通过使用事件 控制器代码 public function actionCreate() { $model = new Registeration(); if ($model->load(Yii::$app->request->post())) { if($model->

我想在新用户注册时向管理员发送电子邮件。我想我可以用两种方法。一种方法是使用事件,另一种方法是使用afterSave。 通过使用事件 控制器代码

 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 
}
public function afterSave($insert)
{
   //code
    return parent::afterSave($insert);
}
我可以使用
afterSave
方法进行同样的操作

模型代码

const EVENT_NEW_USER = 'new-user'; 
public function init(){

  $this->on(self::EVENT_NEW_USER, [$this, 'sendMail']);

}

public function sendMail($event){
   //  code 
}
public function afterSave($insert)
{
   //code
    return parent::afterSave($insert);
}
那么这两种方法之间有什么区别吗?使用
Events
afterSave()
哪个更好?

我是Yii的新手

这取决于您试图实现什么

当您使用afterSave时,电子邮件也会在更新时发送

因此,事件将是解决您的问题的更好选择

谢谢和问候


Paul p Elias

从您的代码中,您的注册事件将在afterSave事件之后被调用;)但是带有附加事件处理的编码样式更好,因为您可以从模型类扩展而不附加事件。@bSoft yes Registration事件将在$Model->save()之后调用;这是我的部分plz解释中的一个错误否两者都是“正确的”,但您的附加事件是更好的编码样式,以备将来使用。因此,添加新事件是更好的解决方案。我建议在您的模型中使用
afterSave
。事件更适合于不扩展原始类,只希望在特定点发生某些事情的情况。@Beowulfenator是否可以将其作为答案写入?$insert-如果为false,则表示在更新记录时调用该方法。从