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

首頁 > 編程 > PHP > 正文

yii2組件之多圖上傳插件FileInput的詳細使用

2020-03-22 19:08:54
字體:
來源:轉載
供稿:網友
  • 作者:白狼 出處:http://www.manks.top/yii2_multiply_images.html本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

    文件上傳也寫過幾篇文章了,包括最基本的yii2文件上傳、異步上傳到又拍云以及百度編輯器圖片上傳的問題,貌似不說點多圖上傳的就不完美。

    今天介紹一款多圖上傳的插件 FileInput,至于為什么選中了TA作為我們上傳的插件,一來這貨跟Yii2有一腿,用起來方便;二來嘛,用這個插件不僅添加的時候好操作,修改的時候也可以直接通過異步的方式將圖片悄無聲息的刪掉;最值得一提的是,界面效果融合了bootstrap,清爽簡潔美觀,看起來舒服。

    借助一下場景,方便說明

    假設我們有一張商品表,一張商品圖片表,商品圖片表只對商品id和圖片地址進行存儲

    開始前準備工作

    1、下載我們所需要的組件

    composer require kartik-v/yii2-widget-fileinput '@dev'

    2、準備一張商品表和一張商品圖片表,商品圖片表包括商品id和圖片url即可

    同步上傳多圖片操作

    我們這里所謂的同步操作,即在添加商品時選擇多張圖片,然后跟隨表單一同提交。來看看怎么使用的。

    use kartikileFileInput;// 非ActiveForm的表單echo '<label class='control-label'>圖片</label>';echo FileInput::widget([    'model' => $model,    'attribute' => 'banner[]',    'options' => ['multiple' => true]]);//使用ActiveForm的表單echo $form->field($model, 'banner[]')->widget(FileInput::classname(), [    'options' => ['multiple' => true],]);

    若是要上傳多圖,記得選擇圖片的時候多選哦。

    如此一來,圖片選擇好了直接提交表單就好,后端文件上傳的程序需要自行處理,如果你還沒有實現,可以參考文件上傳的基本操作。需要提醒的是,以本文為例,此處我們給商品添加多圖片實際是操作了兩張數據表。

    商品圖的異步修改(包括刪除添加)操作

    開篇可以看到,對于商品的banner圖,我們是跟隨表單一同提交而進行的上傳,接著我們說一說這個麻煩事:編輯商品的時候如何展示商品圖以及如何對商品圖進行更新新增刪除的操作?

    首先,我們在controller中獲取商品對應的banner圖,在編輯商品頁面展現banner圖之前,我們對其稍微進行一下處理:

    // 假設商品的banner圖是 $relationBanners的集合, $id是商品的id// $relationBanners的數據結構如:/** * Array *( *   [0] => Array *        ( *            [id] => 1484314 *            [goods_id] => 1173376 *            [banner] => ./uploads/20160617/146612713857635322241f2.png *        ) * *) */$relationBanners = Banner::find()->where(['goods_id' => $id])->asArray()->all();// @param $p1 Array 需要預覽的商品圖,是商品圖的一個集合// @param $p2 Array 對應商品圖的操作屬性,我們這里包括商品圖刪除的地址和商品圖的id$p1 = $p2 = [];if ($relationBanners) {    foreach ($relationBanners as $k => $v) {        $p1[$k] = $v['banner'];        $p2[$k] = [            // 要刪除商品圖的地址            'url' => Url::toRoute('/banner/delete'),            // 商品圖對應的商品圖id            'key' => $v['id'],        ];    }}return $this->render('banner', [    // other params    'p1' => $p1,    'p2' => $p2,    // 商品id    'id' => $id, ]);

    視圖文件View的代碼可參考

    // 視圖文件use kartikileFileInput;<?php echo $form->field($model, 'banner[]')->label('banner圖')->widget(FileInput::classname(), [    'options' => ['multiple' => true],    'pluginOptions' => [        // 需要預覽的文件格式        'previewFileType' => 'image',        // 預覽的文件        'initialPreview' => $p1,        // 需要展示的圖片設置,比如圖片的寬度等        'initialPreviewConfig' => $p2,        // 是否展示預覽圖        'initialPreviewAsData' => true,        // 異步上傳的接口地址設置        'uploadUrl' => Url::toRoute(['/goods/async-banner']),        // 異步上傳需要攜帶的其他參數,比如商品id等        'uploadExtraData' => [            'goods_id' => $id,        ],        'uploadAsync' => true,        // 最少上傳的文件個數限制        'minFileCount' => 1,        // 最多上傳的文件個數限制        'maxFileCount' => 10,        // 是否顯示移除按鈕,指input上面的移除按鈕,非具體圖片上的移除按鈕        'showRemove' => true,        // 是否顯示上傳按鈕,指input上面的上傳按鈕,非具體圖片上的上傳按鈕        'showUpload' => true,        //是否顯示[選擇]按鈕,指input上面的[選擇]按鈕,非具體圖片上的上傳按鈕        'showBrowse' => true,        // 展示圖片區域是否可點擊選擇多文件        'browseOnZoneClick' => true,        // 如果要設置具體圖片上的移除、上傳和展示按鈕,需要設置該選項        'fileActionSettings' => [            // 設置具體圖片的查看屬性為false,默認為true            'showZoom' => false,            // 設置具體圖片的上傳屬性為true,默認為true            'showUpload' => true,            // 設置具體圖片的移除屬性為true,默認為true            'showRemove' => true,        ],    ],    // 一些事件行為    'pluginEvents' => [        // 上傳成功后的回調方法,需要的可查看data后再做具體操作,一般不需要設置        'fileuploaded' => 'function (event, data, id, index) {            console.log(data);        }',    ],]);?>        

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 左云县| 吴旗县| 云龙县| 广丰县| 开封市| 苗栗县| 大庆市| 怀化市| 江门市| 南皮县| 乳源| 保山市| 平远县| 海晏县| 台湾省| 杭锦后旗| 尤溪县| 通山县| 福州市| 胶州市| 萨迦县| 浦江县| 绥阳县| 高安市| 禹州市| 临洮县| 东山县| 鄂尔多斯市| 马关县| 潮安县| 和林格尔县| 锡林浩特市| 文成县| 永宁县| 安陆市| 邹城市| 普格县| 宁强县| 教育| 都昌县| 叙永县|