Задать вопрос
@teodor7teodor7

Как сделать загрузку нескольких файлов на Yii2 используя kartik-v/yii2-widget-fileinput?

Решил сделать загрузку нескольких файлов картинок с помощью FileInput Widget

<?= $form->field($model, 'imageFiles[]')->widget(FileInput::classname(),[
        'name' => 'imageFiles[]',
        'attribute' => 'imageFiles[]',
        'options' => ['multiple' => true],
        'pluginOptions' => [
            'previewFileType' => 'any',
            'showPreview' => true,
            'showCaption' => true,
            'showRemove' => true,
            'showUpload' => false,
            'uploadClass' => 'hide',
            'overwriteInitial'=>false,
            'initialPreviewAsData'=>true,
            'uploadUrl' => Url::to(['/site/image-manager-upload']),
            'fileActionSettings' =>['showUpload' => false],
            'maxFileCount' => 10
        ],
    ]); ?>

view
public function actionCreate()
    {
        $model = new Hotel();
        $model->load(Yii::$app->request->post());
        $model->imageFiles = UploadedFile::getInstances($model, 'imageFiles');
        var_dump($model->imageFiles);die();
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }

        return $this->render('create', [
            'model' => $model,
        ]);
    }

controller

array(1) { [0]=> object(yii\web\UploadedFile)#168 (5) { ["name"]=> string(12) "IMG_2793.jpg" ["tempName"]=> string(36) "C:\OSPanel\userdata\temp\phpC2A1.tmp" ["type"]=> string(10) "image/jpeg" ["size"]=> int(264672) ["error"]=> int(0) } }

Результат

Получается что присутствует только последний файл в массиве. Если не использую этот виджет то все нормально грузится массив.
  • Вопрос задан
  • 1372 просмотра
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
У Вас виджет судя по наличию
'uploadUrl'
отправляет файлы ajax-ом. При чем в совершенно другой контролера и экшен. Добавление фото вызывает ajax запрос и так по одному они стучаться в /site/image-manager-upload. Где и должны сохраняться, если таковой экшен есть и там есть логика для сохранения.
Если Вам не нужна асинхронная загрузка и Вы хотите отправлять фото с формой, то уберите 'uploadUrl'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы