现在,kartik小部件的问题出现在表单视图中,在您上传第一张照片后(在提交表单之前),对于其他下一张照片,它只会覆盖之前的照片,并且该字段中的唯一预览是最后一张照片上传了一张。
<?= $form->field($model, 'image')->widget(FileInput::classname(), [
'name'=> 'ads_photos[]',
'options'=>['accept'=>'image/*', 'multiple'=>true, ],
'pluginOptions'=>[
'allowedFileExtensions'=>['jpg','gif','png'],
'overwriteInitial'=>false,
]
]);
?>
如您所见,我已经设置了
'multiple'=>true
,并且 'overwriteInitial'=>false,
就您在 指南 中所见,它也说了同样的话。您需要更仔细地阅读指南:
注意: 使用小部件上传多个文件时,您必须通过将 [] 附加到输入/属性名称来以数组格式命名 HTML 输入。查看使用示例。
您是否尝试过设置默认初始预览。假设如果您的小部件没有任何以前的图像,则设置默认图像,就像我们为个人资料照片设置默认头像一样。
通过设置初始预览属性来尝试此操作
<?= $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,
]
]);
?>
希望对你有帮助
允许我连续处理多个选择(即不使用 ctrl)的唯一解决方案是伪造引导文件输入小部件的“uploadUrl”插件设置。 设置如下。
'showUpload' => false,
'uploadUrl' => Url::to(['/site/file-upload']), //need to set this to allow multiple files,
'overwriteInitial'=>false,
然后我捕获表单提交中的文件,因此我关闭了上传功能。