Difference between afterSave and a Event in yii2?

2.5k views Asked by At

I wanted to send an email to admin when a new user registers. I think i can do it using two ways. one way is to use events and other is by using afterSave. By using Events Controller code

 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,
            ]);
        }
    }

Model code

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

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

}

public function sendMail($event){
   //  code 
}

I can do the same using the afterSave method

Model code

public function afterSave($insert)
{
   //code
    return parent::afterSave($insert);
}

So is there any difference between the two methods? Which one is better using Events or afterSave() ?

1

There are 1 answers

1
Paul P Elias On BEST ANSWER

I am new to Yii,

It depends on what you are trying to implement.

When you use afterSave email will be sent on updates also.

So event would be a better choice to your problem.

Thanks & Regards

Paul P Elias