日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2023/12/20 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 手冊地址:
  • before_insert(新增之前的操作)
    • 要實現的功能
    • 思路
    • 觸發條件:
      • 1. 控制器里必須要調用模型的save()方式保存數據,用insert()觸發不了勾子函數的
      • 2. 模型初使化init()里使用 Goods::beforeInsert

手冊地址:

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

before_insert(新增之前的操作)

要實現的功能

上傳原圖片,在新增數據之前生成三張縮略圖片,然后再插入數據 添加商品基本信息及通過后置鉤子上傳商品主圖

思路

  • 控制器里調用模型的save()方法保存數據
  • 模型里的用前置勾子beforeInsert()保存之前把上傳原圖片先成三張縮略到指定的目錄里
  • 再把三張縮略圖的和原圖片的地址拼裝好,放到對應的表字段里.如: $goods->og_thumb=$ogThumb;
  • 模型里執行完前置勾子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添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。