如果有一个控制器yii2有一个模型,例如,只有轮廓:
class MyController class extends Controller {
public function actionCreate() {
$valid = $model->validate();
}
}
需要从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的返回吗?
答案 0 :(得分:0)
不,您将无法访问任何这些消息,因为:
$model->validate()
的控制器中,永远不会调用afterSave()
。您需要致电$model->save()
。afterSave()
不应返回任何内容,因此您返回的值将丢失。请参阅官方文档here 答案 1 :(得分:0)
不,它不会用您的代码触发afterSave事件。 {2}正在触发\yii\db\BaseActiveRecord::afterSave
如果你看一下\yii\base\Model::validate,你会发现afterSave没有在这里打电话。