【问题标题】:Yii2 - Uploading multiple images in the form using kartik fileInputYii2 - 使用 kartik fileInput 在表单中上传多个图像
【发布时间】:2016-08-20 13:35:19
【问题描述】:

现在kartik 小部件的问题出现在表单视图中,在您为其他下一张照片上传第一张照片(在提交表单之前)后,它只会覆盖之前的照片,并且该字段中的唯一预览是最后上传的。

 <?= $form->field($model, 'image')->widget(FileInput::classname(), [
                'name'=> 'ads_photos[]',
                'options'=>['accept'=>'image/*', 'multiple'=>true, ],
                'pluginOptions'=>[
                'allowedFileExtensions'=>['jpg','gif','png'],
                'overwriteInitial'=>false,
                ]
            ]); 
        ?>

如您所见,我设置了 'multiple'=&gt;true 和 'overwriteInitial'=&gt;false,,正如您在 guide 中看到的一样。
但是有什么问题?

【问题讨论】:

  • 你找到解决方案了吗我也面临同样的问题
  • @Sajid 很抱歉这么说,但我改变了整个项目。我找不到解决方案。

标签: file-upload yii2 widget


【解决方案1】:

您需要更仔细地阅读指南:

注意: 使用小部件上传多个文件时,您必须通过将 [] 附加到输入/属性名称来以数组格式命名 HTML 输入。检查使用示例。

【讨论】:

  • 该指南在代码顶部的评论中提到的唯一一件事是:将覆盖initialPreview 设置为false 以将上传的图像附加到初始预览中。我> 。但无论如何我已经更新了答案,这是你的意思吗?还有其他我必须注意的;我可以在每次浏览中上传多个文件,但我不能单独这样做。在示例中,每张照片中还有一个垃圾桶图标,即使我使用我提到的方式,我也没有它。
  • @Zhang Buzz 我也有同样的问题,请你帮忙
  • @Sajid,对不起,我很久没有玩 PHP(转向 node.js)了,我无能为力。
【解决方案2】:

您是否尝试过设置默认初始预览。假设如果您的小部件没有任何以前的图像,则设置默认图像,就像我们为个人资料照片设置默认头像一样。

通过设置初始预览属性试试这个

<?= $form->field($model, 'image')->widget(FileInput::classname(), [
                'name'=> 'ads_photos[]',
                'options'=>['accept'=>'image/*', 'multiple'=>true, ],
                'pluginOptions'=>[
                'allowedFileExtensions'=>['jpg','gif','png'],
                'initialPreview'=>[
            "http://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/FullMoon2010.jpg/631px-FullMoon2010.jpg",
        ],
        'overwriteInitial'=>false,
        'initialPreviewAsData'=>true,
                ]
            ]); 
        ?>

希望对你有帮助

【讨论】:

  • 感谢您的回复。初始预览对我做的唯一一件事就是将图像放在那里,没有什么不同。
  • 你使用的是什么版本,请尝试更新扩展
  • 小部件是最新版本,我最近通过 composer 安装了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多