如何正确使用Yii2框架中的Aftersave事件处理?

2026-05-06 21:451阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计303个文字,预计阅读时间需要2分钟。

如何正确使用Yii2框架中的Aftersave事件处理?

相关主题

这个多出来的,保存图片的功能,不需要改动控制器的代码,借助 Model 的 afterSave 生命周期函数,就可以自动帮我们完成。原理是look表的记录保存(或者修改)之后,会产生一个 lookid ,然后我们将这个lookid 和 mediaurl 存储到 lookmedia表中去。

public function afterSave($insert,$changedAttributes) { if (Yii::$app->id=='app-backend'){ //保存图片字段 $add_imgarr=$this->add_img; if ($add_imgarr){ foreach (array_filter($add_imgarr) as $mediaurl){ $lookmedia=new Lookmedia(); $lookmedia->lookid=$this->lookid; $lookmedia->mediaurl=$mediaurl; $lookmedia->type=0; $lookmedia->save(); } } } if (parent::afterSave($insert,$changedAttributes)) { return true; }else return false; }

这里只提三点,也算是几个坑吧:

1)afterSave 的参数,$insert 和 $changedAttributes 是固定写法,必须要有,否则报错。

2)函数内部,在本地环境中,我之前写的是 beforeSave 无报错,程序运行正常;但移植到服务器上之后,会报错,于是改为 afterSave 后正常。

3)实测,我们新增的逻辑,必须放在 parent 函数之外,否则不会被执行(图片已经上传,但是lookmedia表中没有记录)

标签:YII2

本文共计303个文字,预计阅读时间需要2分钟。

如何正确使用Yii2框架中的Aftersave事件处理?

相关主题

这个多出来的,保存图片的功能,不需要改动控制器的代码,借助 Model 的 afterSave 生命周期函数,就可以自动帮我们完成。原理是look表的记录保存(或者修改)之后,会产生一个 lookid ,然后我们将这个lookid 和 mediaurl 存储到 lookmedia表中去。

public function afterSave($insert,$changedAttributes) { if (Yii::$app->id=='app-backend'){ //保存图片字段 $add_imgarr=$this->add_img; if ($add_imgarr){ foreach (array_filter($add_imgarr) as $mediaurl){ $lookmedia=new Lookmedia(); $lookmedia->lookid=$this->lookid; $lookmedia->mediaurl=$mediaurl; $lookmedia->type=0; $lookmedia->save(); } } } if (parent::afterSave($insert,$changedAttributes)) { return true; }else return false; }

这里只提三点,也算是几个坑吧:

1)afterSave 的参数,$insert 和 $changedAttributes 是固定写法,必须要有,否则报错。

2)函数内部,在本地环境中,我之前写的是 beforeSave 无报错,程序运行正常;但移植到服务器上之后,会报错,于是改为 afterSave 后正常。

3)实测,我们新增的逻辑,必须放在 parent 函数之外,否则不会被执行(图片已经上传,但是lookmedia表中没有记录)

标签:YII2