php上传商品信息并显示,第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)...
[TOC]
手冊(cè)地址:
before_insert(新增之前的操作)
要實(shí)現(xiàn)的功能
上傳原圖片,在新增數(shù)據(jù)之前生成三張縮略圖片,然后再插入數(shù)據(jù)
添加商品基本信息及通過后置鉤子上傳商品主圖
思路
控制器里調(diào)用模型的save()方法保存數(shù)據(jù)
模型里的用前置勾子beforeInsert()保存之前把上傳原圖片先成三張縮略到指定的目錄里
再把三張縮略圖的和原圖片的地址拼裝好,放到對(duì)應(yīng)的表字段里.如: $goods->og_thumb=$ogThumb;
模型里執(zhí)行完前置勾子beforeInsert()函數(shù)后(把要保存的數(shù)據(jù)處理好),控制器里就會(huì)把數(shù)據(jù)save到表里.
觸發(fā)條件:
1. 控制器里必須要調(diào)用模型的save()方式保存數(shù)據(jù),用insert()觸發(fā)不了勾子函數(shù)的
$add=model('goods')->save($data);
控制器里
$add=model('goods')->save($data);
public function add()
{
if(request()->isPost()){
$data=input('post.');
// dump($data); die;
//驗(yàn)證
// 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;//當(dāng)插入到當(dāng)然模型對(duì)應(yīng)表里不存在的字段時(shí),會(huì)被忽略掉
protected static function init()
{
/**
* Goods指當(dāng)前模型,也可以用self
* beforeInsert 控制器調(diào)用本模型sava()方法保存之前的操作
* $goods回調(diào)的數(shù)據(jù),即控制器調(diào)用model保存時(shí)要存入的數(shù)據(jù)
* 調(diào)用下面的upload函數(shù)時(shí)要用$goods(當(dāng)前類的實(shí)例對(duì)象)去調(diào)用
*/
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);//商品編號(hào)
// dump($ogThumb); die;
});
}
總結(jié)
以上是生活随笔為你收集整理的php上传商品信息并显示,第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020计算机语言排行 rust,Red
- 下一篇: php base64_decode 图片