国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

yii2高級應(yīng)用之自定義組件實現(xiàn)全局使用圖片上傳功能的方法

2024-05-04 23:50:41
字體:
供稿:網(wǎng)友

本文講述了yii2高級應(yīng)用之自定義組件實現(xiàn)全局使用圖片上傳功能的方法。分享給大家供大家參考,具體如下:

此例為yii2高組應(yīng)用,這里只提供一個簡單的事例

在yii2中,在使用到上傳圖片時有自帶的一個上傳圖片類,但不太好用。

其中有一種方式,把自己寫的一個上傳圖片類文件,注冊成一個組件,在全局中使用。(我記得我在里面有寫過一篇小物件的使用)

這里,我只作一個簡單的自定義組件介紹

1、在backend(或frontend)定義一個 upload.php(注意路徑: backend/components)

//圖片上傳處理類(這里略)//upload.php事例代碼namespace backend/components;class Upload{  public function test(){    $a = '你好';    return $a;  }}

2、backend/config/main.php 注冊剛寫的自定義組件

'components' => [  'imgload' => [    'class' => 'backend/components/Upload'  ],]

3、控制器中如何使用

public function actionArticlelist(){  $cc = Yii::$app->imgload->test();  var_dump($cc);exit;}

那么,一個完整的圖片上傳組件這里就不寫了。

這里只寫了一個使用自定義組件的方法!

還是補進進來吧。

1、自定義組件,便于全局使用。backend/config/main.php

'components' => [  'user' => [    'identityClass' => 'common/models/AgMerch',    'enableAutoLogin' => true,  ],  //自定義圖片上傳類  'imgload' => [    'class' => 'agent/components/Upload'  ],]

2、自定義圖片上傳類 backend/components/Upload.php

namespace agent/components;use yii;use yii/base/Object;use yii/web/UploadedFile;class Upload extends Object{  /**   * [UploadPhoto description]   * @param [type] $model   [實例化模型]   * @param [type] $path    [圖片存儲路徑]   * @param [type] $originName [圖片源名稱]   * @param boolean $isthumb  [是否要縮略圖]   */  public function UploadPhoto($model,$path,$originName,$isthumb=false){    $root = $_SERVER['DOCUMENT_ROOT'].'/'.$path;    //返回一個實例化對象    $files = UploadedFile::getInstance($model,$originName);    $folder = date('Ymd')."/";    $pre = rand(999,9999).time();    if($files && ($files->type == "image/jpeg" || $files->type == "image/pjpeg" || $files->type == "image/png" || $files->type == "image/x-png" || $files->type == "image/gif"))    {      $newName = $pre.'.'.$files->getExtension();    }else{      die($files->type);    }    if($files->size > 2000000){      die("上傳的文件太大");    }    if(!is_dir($root.$folder))    {      if(!mkdir($root.$folder, 0777, true)){        die('創(chuàng)建目錄失敗...');      }else{      //  chmod($root.$folder,0777);      }    }    //echo $root.$folder.$newName;exit;    if($files->saveAs($root.$folder.$newName))    {      if($isthumb){        $this->thumbphoto($files,$path.$folder.$newName,$path.$folder.'thumb'.$newName);        return $path.$folder.$newName.'#'.$path.$folder.'thumb'.$newName;      }else{        return $path.$folder.$newName;      }    }  }}

3、控制器部分

use backend/components/Upload;public function actionArtadd(){  $model = new Article();  if ($model->load(Yii::$app->request->post())) {    //cover為表中的字段名    $img = Yii::$app->imgload->UploadPhoto($model,'uploads/article/','cover');    $model->cover = $img;//存入表中    if($model->save()){      Yii::$app->getSession()->setFlash('info', '添加成功!');      return $this->redirect(['xxx']);    }else{      Yii::$app->getSession()->setFlash('info', '添加失敗!');      @unlink($img);      return $this->redirect(['xxx']);    }  }  //代碼略}

4、視圖 (部分代碼)

<?= $form->field($model, 'cover', [  'options'=>['class'=>''],  'inputOptions' => ['class' => 'form-control'],])->fileInput()->label(false); ?>

希望本文所述對大家基于Yii框架的PHP程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 襄樊市| 兴山县| 方正县| 萨迦县| 台中市| 温泉县| 山丹县| 淮阳县| 桃园市| 克东县| 天长市| 榆林市| 仙游县| 绵阳市| 寿阳县| 凌海市| 金寨县| 莒南县| 东平县| 梨树县| 汽车| 永仁县| 麟游县| 封开县| 天长市| 新源县| 黔南| 延吉市| 芒康县| 湖州市| 上蔡县| 汉寿县| 乡城县| 长顺县| 加查县| 嫩江县| 昌江| 金溪县| 彭水| 米泉市| 临夏县|