详细使用FileInput插件上传yii2组件的多个图像

优采云 发布时间: 2020-08-09 03:09

  我写了几篇有关文件上传的文章,包括最基本的yii2文件上传,异步上传到云和百度编辑器图像上传. 看来上传多张图片并不完美.

  今天,我将介绍一个用于上传多个图像的插件FileInput. 至于为什么我们选择TA作为我们的上传插件,这个与Yii2有联系,并且易于使用. 其次,不仅可以在添加插件时使用该插件,还可以在操作和修改过程中通过异步方式直接静默删除图片. 最值得一提的是,界面效果与Bootstrap集成在一起,令人耳目一新,简单美观,舒适.

  在现场的帮助下,方便解释

  假设我们有一个产品表,一个产品图片表,该产品图片表仅存储产品ID和图片地址

  开始之前的准备工作

  1. 下载我们需要的组件

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

  2. 准备产品表和产品图片表. 产品图片表收录产品ID和图片网址.

  同步上传多张图片的操作

  此处所谓的同步操作是添加产品时选择多张图片,然后将它们与表单一起提交. 让我们看看如何使用它.

  use kartik\file\FileInput;

// 非ActiveForm的表单

echo '图片';

echo FileInput::widget([

'model' => $model,

'attribute' => 'banner[]',

'options' => ['multiple' => true]

]);

//使用ActiveForm的表单

echo $form->field($model, 'banner[]')->widget(FileInput::classname(), [

'options' => ['multiple' => true],

]);

  如果要上传多张图片,请记住在选择图片时选择多张图片.

  通过这种方式,只需在选择图片后立即提交表单. 后端文件上传程序需要自己处理. 如果尚未实现,则可以参考文件上传的基本操作. 需要提醒的是,以本文为例,这里我们实际上是在操作两个数据表,以向产品中添加多个图像.

  产品图的异步修改(包括删除\添加)操作

  一开始,您可以看到产品的标语图像,我们将其与表单提交一起上传,然后让我们讨论这一麻烦的事情: 如何在编辑产品时显示产品图像以及如何更新产品图片\添加/删除操作?

  首先,我们在控制器中获得与产品相对应的横幅图像. 在横幅图像显示在编辑产品页面上之前,我们将进行一些处理:

  // 假设商品的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\file\FileInput;

  如上所述,我们列出了FileInput组件的一些基本属性和设置. 如有必要,您可以检查文档.

  [考虑到大多数国内网站都非常频繁地采集文章,并且有些网站没有指出原创文本的来源,因此原作者希望访问者可以查看原创文本,以防万一出现无法更新所有内容的问题. 文章,避免误导! ]

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线