分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

第37课 thinkphp5添加商品基本信息及通过后置钩子上传商品主图 模型事件(勾子函数)

发布时间:2023-09-06 02:19责任编辑:胡小海关键词:thinkphp

目录

  • 手册地址:
  • before_insert(新增之前的操作)
    • 要实现的功能
    • 触发条件:
      • 1. 控制器里必须要调用模型的save()方式保存数据,用insert()触发不了勾子函数的
      • 2. 模型初使化init()里使用 Goods::beforeInsert

手册地址:

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved