模型返回afterSave yii2

问题描述:

如果没有与其中一个型号一个控制器yii2,例如,只有轮廓:模型返回afterSave yii2

class MyController class extends Controller { 
    public function actionCreate() { 
     $valid = $model->validate(); 
    } 
} 

需要从aftersave的回报,这是指示消息,如果电子邮件能发送与否,并插入所有属性。

afterSave模型:

public function afterSave($insert, $changedAttributes) { 
    if(!$this->isNewRecord) { 
     try { 
      Yii::$app->mailer->compose() 
       // email composition here 
       ->send(); 

      return 'mail sent'; 
     catch (\Swift_SwiftException $exception) { 
      return 'email undeliverable'. $exception->getMessage(); 
     } 
    } 
} 

可以从afterSave返回通过控制器来访问?

不,你将无法访问任何这些消息,这是因为:

  1. 在控制器您呼叫$model->validate()afterSave()将永远不会被调用。您需要致电$model->save()
  2. afterSave()不应该返回任何内容,因此您返回的值将丢失。请参阅官方文档中的函数定义here

不,它不会触发afterSave事件与您的代码。 \yii\db\BaseActiveRecord::afterSave在2个地方

  1. \yii\db\BaseActiveRecord::updateInternal
  2. \yii\db\ActiveRecord::insertInternal

,如果你在\yii\base\Model::validate看看你会看到afterSave没有调用这里被触发。