• 技术文章 >php框架 >YII

    yii2 aftersave怎么用

    (*-*)浩(*-*)浩2019-11-05 11:48:06原创3596
    yii2在保存完之后,会调用aftersave方法,aftersave里只做了一件事,就是触发了相应的event事件,EVENT_AFTER_INSERT或者EVENT_AFTER_UPDATE,可以看下Yii2的event

    需要把用户提交的数据保存到 look 表,同时表单中的 add_img 图片地址数组,分别保存到 lookmeida 表。 (推荐学习:yii教程

    这个多出来的,保存图片的功能,不需要改动控制器的代码,借助 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 aftersave怎么用的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:yii2
    上一篇:yii怎么使用jquery 下一篇:yii2 cookie取不到的原因
    线上培训班

    相关文章推荐

    • 如何实现修改yii2.0用户登录使用的user表为其它的表• 如何解决Yii2针对游客和用户防范规则和限制• Yii2中场景的简单使用• yii2实现 关于在页面中"上一页,下一也" 的代码

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网