目录

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


手册地址:

https://www.kancloud.cn/manual/thinkphp5/135195

before_insert(新增之前的操作)

要实现的功能

上传原图片,在新增数据之前生成三张缩略图片,然后再插入数据
添加商品基本信息及通过后置钩子上传商品主图

思路

  1. 控制器里调用模型的save()方法保存数据
  2. 模型里的用前置勾子beforeInsert()保存之前把上传原图片先成三张缩略到指定的目录里
  3. 再把三张缩略图的和原图片的地址拼装好,放到对应的表字段里.如: $goods->og_thumb=$ogThumb;
  4. 模型里执行完前置勾子beforeInsert()函数后(把要保存的数据处理好),控制器里就会把数据save到表里.

触发条件:

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 $field=true;//当插入到当然模型对应表里不存在的字段时,会被忽略掉
protected static function init()
{/*** Goods指当前模型,也可以用self* beforeInsert 控制器调用本模型sava()方法保存之前的操作* $goods回调的数据,即控制器调用model保存时要存入的数据* 调用下面的upload函数时要用$goods(当前类的实例对象)去调用*/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;});
}

转载于:https://www.cnblogs.com/haima/p/9829402.html

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

  1. php上传商品信息并显示,第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)...

    [TOC] 手册地址: before_insert(新增之前的操作) 要实现的功能 上传原图片,在新增数据之前生成三张缩略图片,然后再插入数据 添加商品基本信息及通过后置钩子上传商品主图 思路 控制器 ...

  2. Magento教程 9:如何上传商品?

    欢迎开始使用Magento购物车系统 ,上次教过大家如何新增网站选单 ,今天Astral Web要教大家如何在后台上传商品,填写详细资讯及上传产品图片! 首先请先来到Magento的后台介面,登入之后 ...

  3. 淘宝的一键上下架工具怎么批量上传商品的?

    淘宝商家日常的商品管理都需要借用到上货软件,能批量上下架商品的软件,毕竟店铺的商品需要不断更换和上新,才能保持每天都有流量进店,现在也快到秋季,商家也该换新款,批量上传商品和下架商品的时候了. 手动上 ...

  4. 简单的ajax上传商品功能使用SevletFileUpload和FormData

    目录 1.先上图 2.使用ServletFileUpload读取前端发送过来的请求 2.1.maven依赖 2.2.SevletFileUpload的一些基本操作 3.前端代码 4. Servlet ...

  5. 淘宝/天猫开放平台新商品发布API接口,商品发布接口,店铺上传接口,利用淘宝新品发布商品接口进行上传商品至淘宝店铺,接口对接方案

    一.淘宝/天猫开放平台新商品发布API接口参数说明: 1.通过注册key和secret得到测试账号,然后给到淘宝应用市场的店铺授权购买,然后再平台上面进行店铺添加审核,审核通过后即可用请求链接上传商品 ...

  6. 亚马逊MWS开发--上传商品常见错误

    一.错误来源 不管通过哪种方式上传商品都会出现各种问题,每一类问题亚马逊都有固定的错误码,比如常见5000,8541等,这些错误都会体现在上传的结果报告中 <?xml version=" ...

  7. 淘宝一键铺货上传商品API对接文档

    [商品接口]淘宝一键铺货对接文档 淘宝一键铺货对接文档 测试方法(测试地址,请注册) 1.订购链接:月功能费__元(登录后显示正常价格) 2.授权 拿到3.调用万邦的 custom接口 http:// ...

  8. 淘宝铺货上传商品API文档

    1.订购链接:月功能费__元(登录后显示正常价格) 2.授权 拿到ssion_id 3.调用万邦的 custom接口 (注册使用) 参数要传授权的session,参数和淘宝官方的一致 (如:上传商品接 ...

  9. 小程序如何上传商品图片

    了解如何在小程序商城中上传商品图片是非常重要的,因为商品图片的质量和展示效果直接影响到用户对商品的购买决策.下面,我将介绍怎么在小程序上传产品图片的方法和注意事项. 1. 图片准备:在上传商品图片之前 ...

最新文章

  1. 内存泄露的原因找到了,罪魁祸首居然是 Java TheadLocal
  2. 在window和linux上通用的SprtLock类头实现文件
  3. 使用C#实现Morse码的输出
  4. 1.9 可避免误差-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  5. 左右居中_008布局题:div垂直居中,左右10px,高度始终为宽度一半
  6. python legb_理解 Python 的 LEGB.
  7. 六时车主 App iOS隐私政策
  8. 如何完整卸载wxpython_TextCtrl的WXPython C++部分被删除
  9. Java开发笔记(一百三十二)Swing的表格
  10. itextpdf 数字签名
  11. mysql同时满足升序和降序_mysql升序和降序语句
  12. nginx配置详细说明
  13. 毕业一年来我的前端之路总结和谈谈大厂外包工作体验
  14. 面部刮痧:别样的美丽疗法
  15. [zt] dmt、lmt、mssm, assm (SEGMENT SPACE MANAGEMENT AUTO) 的一点总结
  16. 西门子PLC能否通过以太网数据模块实现无线通讯?
  17. 存货账龄分析报表(上)
  18. 2020最新阿里云计算ACP考试笔记
  19. 为您讲述交流变频电源的基本原理和发展史
  20. PHP如何删除一个路径下的所有文件夹和文件教程

热门文章

  1. 面向对象基础知识整理
  2. Gridview SummaryItem 格式化数字
  3. 快速部署ldap服务
  4. Java练习 SDUT-1586_计算组合数
  5. 【TeeChart .NET教程】(七)使用函数
  6. 利用FormData对象实现AJAX文件上传功能及后端实现
  7. 简单使用ansible-playbook
  8. shell循环结构之while循环
  9. Android Ion 框架 文件下载
  10. 开发高级 Web 部件