yii2组件之多图上传插件FileInput的详细使用,yii2fileinput
yii2组件之多图上传插件FileInput的详细使用,yii2fileinput
作者:白狼 出处:http://www.manks.top/yii2_multiply_images.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
文件上传也写过几篇文章了,包括最基本的yii2文件上传、异步上传到又拍云以及百度编辑器图片上传的问题,貌似不说点多图上传的就不完美。
今天介绍一款多图上传的插件 FileInput,至于为什么选中了TA作为我们上传的插件,一来这货跟Yii2有一腿,用起来方便;二来嘛,用这个插件不仅添加的时候好操作,修改的时候也可以直接通过异步的方式将图片悄无声息的删掉;最值得一提的是,界面效果融合了bootstrap,清爽简洁美观,看起来舒服。
借助一下场景,方便说明
假设我们有一张商品表,一张商品图片表,商品图片表只对商品id和图片地址进行存储
开始前准备工作
1、下载我们所需要的组件
composer <span>require</span> kartik-v/yii2-widget-fileinput "@dev"
2、准备一张商品表和一张商品图片表,商品图片表包括商品id和图片url即可
同步上传多图片操作
我们这里所谓的同步操作,即在添加商品时选择多张图片,然后跟随表单一同提交。来看看怎么使用的。
<span>use</span> kartik\<span>file</span><span>\FileInput; </span><span>//</span><span> 非ActiveForm的表单</span> <span>echo</span> '<label class="control-label">图片</label>'<span>; </span><span>echo</span> FileInput::<span>widget([ </span>'model' => <span>$model</span>, 'attribute' => 'banner[]', 'options' => ['multiple' => <span>true</span><span>] ]); </span><span>//</span><span>使用ActiveForm的表单</span> <span>echo</span> <span>$form</span>->field(<span>$model</span>, 'banner[]')->widget(FileInput::classname(),<span> [ </span>'options' => ['multiple' => <span>true</span>],<span> ]);</span>
若是要上传多图,记得选择图片的时候多选哦。
如此一来,图片选择好了直接提交表单就好,后端文件上传的程序需要自行处理,如果你还没有实现,可以参考文件上传的基本操作。需要提醒的是,以本文为例,此处我们给商品添加多图片实际是操作了两张数据表。
商品图的异步修改(包括删除\添加)操作
开篇可以看到,对于商品的banner图,我们是跟随表单一同提交而进行的上传,接着我们说一说这个麻烦事:编辑商品的时候如何展示商品图以及如何对商品图进行更新\新增\删除的操作?
首先,我们在controller中获取商品对应的banner图,在编辑商品页面展现banner图之前,我们对其稍微进行一下处理:
<span>//</span><span> 假设商品的banner图是 $relationBanners的集合, $id是商品的id // $relationBanners的数据结构如:</span><span> /*</span><span>* * Array *( * [0] => Array * ( * [id] => 1484314 * [goods_id] => 1173376 * [banner] => ./uploads/20160617/146612713857635322241f2.png * ) * *) </span><span>*/</span> <span>$relationBanners</span> = Banner::find()->where(['goods_id' => <span>$id</span>])->asArray()-><span>all(); </span><span>//</span><span> @param $p1 Array 需要预览的商品图,是商品图的一个集合 // @param $p2 Array 对应商品图的操作属性,我们这里包括商品图删除的地址和商品图的id</span> <span>$p1</span> = <span>$p2</span> =<span> []; </span><span>if</span> (<span>$relationBanners</span><span>) { </span><span>foreach</span> (<span>$relationBanners</span> <span>as</span> <span>$k</span> => <span>$v</span><span>) { </span><span>$p1</span>[<span>$k</span>] = <span>$v</span>['banner'<span>]; </span><span>$p2</span>[<span>$k</span>] =<span> [ </span><span>//</span><span> 要删除商品图的地址</span> 'url' => Url::toRoute('/banner/delete'), <span>//</span><span> 商品图对应的商品图id</span> 'key' => <span>$v</span>['id'],<span> ]; } } </span><span>return</span> <span>$this</span>->render('banner',<span> [ </span><span>//</span><span> other params</span> 'p1' => <span>$p1</span>, 'p2' => <span>$p2</span>, <span>//</span><span> 商品id</span> 'id' => <span>$id</span>,<span> ]);</span>
视图文件View的代码可参考
<span>//</span><span> 视图文件</span> <span>use</span> kartik\<span>file</span><span>\FileInput; </span><?<span>php </span><span>echo</span> <span>$form</span>->field(<span>$model</span>, 'banner[]')->label('banner图')->widget(FileInput::classname(),<span> [ </span>'options' => ['multiple' => <span>true</span>], 'pluginOptions' =><span> [ </span><span>//</span><span> 需要预览的文件格式</span> 'previewFileType' => 'image', <span>//</span><span> 预览的文件</span> 'initialPreview' => <span>$p1</span>, <span>//</span><span> 需要展示的图片设置,比如图片的宽度等</span> 'initialPreviewConfig' => <span>$p2</span>, <span>//</span><span> 是否展示预览图</span> 'initialPreviewAsData' => <span>true</span>, <span>//</span><span> 异步上传的接口地址设置</span> 'uploadUrl' => Url::toRoute(['/goods/async-banner']), <span>//</span><span> 异步上传需要携带的其他参数,比如商品id等</span> 'uploadExtraData' =><span> [ </span>'goods_id' => <span>$id</span>,<span> ]</span>, 'uploadAsync' => <span>true</span>, <span>//</span><span> 最少上传的文件个数限制</span> 'minFileCount' => 1, <span>//</span><span> 最多上传的文件个数限制</span> 'maxFileCount' => 10, <span>//</span><span> 是否显示移除按钮,指input上面的移除按钮,非具体图片上的移除按钮</span> 'showRemove' => <span>true</span>, <span>//</span><span> 是否显示上传按钮,指input上面的上传按钮,非具体图片上的上传按钮</span> 'showUpload' => <span>true</span>, <span>//</span><span>是否显示[选择]按钮,指input上面的[选择]按钮,非具体图片上的上传按钮</span> 'showBrowse' => <span>true</span>, <span>//</span><span> 展示图片区域是否可点击选择多文件</span> 'browseOnZoneClick' => <span>true</span>, <span>//</span><span> 如果要设置具体图片上的移除、上传和展示按钮,需要设置该选项</span> 'fileActionSettings' =><span> [ </span><span>//</span><span> 设置具体图片的查看属性为false,默认为true</span> 'showZoom' => <span>false</span>, <span>//</span><span> 设置具体图片的上传属性为true,默认为true</span> 'showUpload' => <span>true</span>, <span>//</span><span> 设置具体图片的移除属性为true,默认为true</span> 'showRemove' => <span>true</span>,<span> ]</span>,<span> ]</span>, <span>//</span><span> 一些事件行为</span> 'pluginEvents' =><span> [ </span><span>//</span><span> 上传成功后的回调方法,需要的可查看data后再做具体操作,一般不需要设置</span> "fileuploaded" => "<span>function (event, data, id, index) { console.log(data); }</span>",<span> ]</span>,<span> ]); </span>?>
如上所述,我们罗列了一些都是组件 FileInput的基本属性和设置,如有所需,可查看文档看属性的详细说明。
[考虑目前国内网站大部分采集文章十分频繁,更有甚者不注明原文出处,原作者更希望看客们查看原文,以防有任何问题不能更新所有文章,避免误导!]
查看原文

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

CrystalDiskMark是一款適用於硬碟的小型HDD基準測試工具,可快速測量順序和隨機讀取/寫入速度。接下來就讓小編為大家介紹一下CrystalDiskMark,以及crystaldiskmark如何使用吧~一、CrystalDiskMark介紹CrystalDiskMark是一款廣泛使用的磁碟效能測試工具,用於評估機械硬碟和固態硬碟(SSD)的讀取和寫入速度和隨機I/O性能。它是一款免費的Windows應用程序,並提供用戶友好的介面和各種測試模式來評估硬碟效能的不同方面,並被廣泛用於硬體評

foobar2000是一款能隨時收聽音樂資源的軟體,各種音樂無損音質帶給你,增強版本的音樂播放器,讓你得到更全更舒適的音樂體驗,它的設計理念是將電腦端的高級音頻播放器移植到手機上,提供更便捷高效的音樂播放體驗,介面設計簡潔明了易於使用它採用了極簡的設計風格,沒有過多的裝飾和繁瑣的操作能夠快速上手,同時還支持多種皮膚和主題,根據自己的喜好進行個性化設置,打造專屬的音樂播放器支援多種音訊格式的播放,它還支援音訊增益功能根據自己的聽力情況調整音量大小,避免過大的音量對聽力造成損害。接下來就讓小編為大

PyCharm是一款功能強大且受歡迎的Python整合開發環境(IDE),提供了豐富的功能和工具,讓開發者可以更有效率地編寫程式碼。而PyCharm的插件機制更是其功能擴充的利器,透過安裝不同的插件,可以為PyCharm增加各種功能和客製化的特性。因此,對於PyCharm新手來說,了解並熟練安裝插件是至關重要的。本文將為你詳細介紹PyCharm插件安裝的全

MetaMask(中文也叫小狐狸錢包)是一款免費的、廣受好評的加密錢包軟體。目前,BTCC已支援綁定MetaMask錢包,綁定後可使用MetaMask錢包進行快速登錄,儲值、買幣等,且首次綁定還可獲得20USDT體驗金。在BTCCMetaMask錢包教學中,我們將詳細介紹如何註冊和使用MetaMask,以及如何在BTCC綁定並使用小狐狸錢包。 MetaMask錢包是什麼? MetaMask小狐狸錢包擁有超過3,000萬用戶,是當今最受歡迎的加密貨幣錢包之一。它可免費使用,可作為擴充功能安裝在網絡

在如今雲端儲存已成為我們日常生活和工作中不可或缺的一部分。百度網盤作為國內領先的雲端儲存服務之一,憑藉其強大的儲存功能、高效的傳輸速度以及便捷的操作體驗,贏得了廣大用戶的青睞。而且無論你是想要備份重要文件、分享資料,還是在線上觀看影片、聽取音樂,百度網盤都能滿足你的需求。但很多用戶可能對百度網盤app的具體使用方法還不了解,那麼這篇教學就將為大家詳細介紹百度網盤app如何使用,還有疑惑的用戶們就快來跟著本文詳細了解一下吧!百度雲網盤怎麼用:一、安裝首先,下載並安裝百度雲軟體時,請選擇自訂安裝選

網易郵箱,作為中國網友廣泛使用的一種電子郵箱,一直以來以其穩定、高效的服務贏得了用戶的信賴。而網易信箱大師,則是專為手機使用者打造的信箱軟體,它大大簡化了郵件的收發流程,讓我們的郵件處理變得更加便利。那麼網易信箱大師該如何使用,具體又有哪些功能呢,下文中本站小編將為大家帶來詳細的內容介紹,希望能幫助到大家!首先,您可以在手機應用程式商店搜尋並下載網易信箱大師應用程式。在應用寶或百度手機助手中搜尋“網易郵箱大師”,然後按照提示進行安裝即可。下載安裝完成後,我們打開網易郵箱帳號並進行登錄,登入介面如下圖所示

用戶使用Edge瀏覽器的過程中可能會添加一些插件來滿足自己更多的使用需求。但是在添加插件時顯示不支援此插件,這該如何解決?今日小編就來給大家分享三種解決方法,快來試試看。 方法一:嘗試用其他的瀏覽器。 方法二:瀏覽器上的FlashPlayer可能過時或遺失,導致此外掛程式不受支援狀態,可在官網下載最新版本。 方法三:同時按下「Ctrl+Shift+Delete」鍵。 點選“清除資料”,重新開啟瀏覽器即可。

Chrome的插件擴充功能安裝目錄是什麼?正常情況下,Chrome外掛程式擴充功能的預設安裝目錄如下:1、windowsxp中chrome外掛程式預設安裝目錄位置:C:\DocumentsandSettings\使用者名稱\LocalSettings\ApplicationData\Google\Chrome\UserData\Default\Extensions2、windows7中chrome插件預設安裝目錄位置:C:\Users\使用者名稱\AppData\Local\Google\Chrome\User
