第37课 thinkphp5添加商品基本信息及通过后置钩子上传商品主图 模型事件(勾子函数)
Posted HaimaBlog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第37课 thinkphp5添加商品基本信息及通过后置钩子上传商品主图 模型事件(勾子函数)相关的知识,希望对你有一定的参考价值。
目录
手册地址:
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 = hinkImage::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添加商品基本信息及通过后置钩子上传商品主图 模型事件(勾子函数)的主要内容,如果未能解决你的问题,请参考以下文章
用unity做一个游戏商城,通过脚本添加进去图片及相关信息,然后点击商品会弹出购买画面,
第195天学习打卡(项目 谷粒商城 37新增商品 获取分类下所有属性及分组)