yii2yii-events

Difference between afterSave and a Event in yii2?


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() ?


Solution

  • 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