目录
- 手册地址:
- before_insert(新增之前的操作)
- 要实现的功能
- 触发条件:
- 1. 控制器里必须要调用模型的
save()
方式保存数据,用insert()
触发不了勾子函数的 - 2. 模型初使化init()里使用
Goods::beforeInsert
- 1. 控制器里必须要调用模型的
手册地址:
https://www.kancloud.cn/manual/thinkphp5/135195
before_insert(新增之前的操作)
要实现的功能
在新增数据之前生成三张缩略图片,然后再插入数据添加商品基本信息及通过后置钩子上传商品主图
触发条件:
1. 控制器里必须要调用模型的save()
方式保存数据,用insert()
触发不了勾子函数的
$add=model(‘goods‘)->save($data);
控制器里
$add=model(‘goods‘)->save($data);
public function add(){ ???if(request()->isPost()){ ???????$data=input(‘post.‘); ???????// dump($data); die; ???????//验证 ???????// dump($_FILES);die; ???????$validate = validate(‘goods‘); ???????if(!$validate->check($data)){ ???????????$this->error($validate->getError()); ???????} ???????$add=model(‘goods‘)->save($data); ???????if($add){ ???????????$this->success(‘添加商品成功!‘,‘lst‘); ???????}else{ ???????????$this->error(‘添加商品失败!‘); ???????} ???????return; ???}} ??
2. 模型初使化init()里使用 Goods::beforeInsert
模型里
protected static function init(){ ???/** ???* Goods指当前模型,也可以用self ???* beforeInsert 控制器调用本模型sava()方法保存之前的操作 ???* $goods回调的数据,即控制器调用model保存时要存入的数据 ???*/ ???Goods::beforeInsert(function ($goods) { ???????// 生成商品主图的三张缩略图 ???????if($_FILES[‘og_thumb‘][‘tmp_name‘]){ ???????????$thumbName=$goods->upload(‘og_thumb‘); ???????????$ogThumb=date("Ymd"). DS . $thumbName; ???????????$bigThumb=date("Ymd"). DS . ‘big_‘.$thumbName; ???????????$midThumb=date("Ymd"). DS . ‘mid_‘.$thumbName; ???????????$smThumb=date("Ymd"). DS . ‘sm_‘.$thumbName; ???????????$image = \think\Image::open(IMG_UPLOADS.$ogThumb); ???????????$image->thumb(config(‘big_thumb_width‘), config(‘big_thumb_height‘))->save(IMG_UPLOADS.$bigThumb); ???????????$image->thumb(config(‘mid_thumb_width‘), config(‘mid_thumb_height‘))->save(IMG_UPLOADS.$midThumb); ???????????$image->thumb(config(‘sm_thumb_width‘), config(‘sm_thumb_height‘))->save(IMG_UPLOADS.$smThumb); ???????????$goods->og_thumb=$ogThumb; ???????????$goods->big_thumb=$bigThumb; ???????????$goods->mid_thumb=$midThumb; ???????????$goods->sm_thumb=$smThumb; ???????} ???????$goods->goods_code=time().rand(111111,999999);//商品编号 ???????// dump($ogThumb); die; ???});}
第37课 thinkphp5添加商品基本信息及通过后置钩子上传商品主图 模型事件(勾子函数)
原文地址:https://www.cnblogs.com/haima/p/9829402.html