Загрузка нескольких файлов не работает в yii2

Вид:

 <?php echo FileInput::widget([
'model' => $visaDocument,
'attribute' => 'temp_image[]',
'options' => ['multiple' => true]

]); ?>

Модель:

Определил переменную:

public $temp_image;

В правилах:

[['temp_image'], 'file','extensions' => ' pdf, docx, odt, jpg, png','maxFiles' => 4],

Создал функцию:

public function upload($model, $id) {

    $imageCount = SbhrmVisaDocument::find()->where(['visa_document_id' => $id])->count();



        foreach ($model->temp_image as $file) {
            if($imageCount < 4){

                $image = new SbhrmVisaDocument();
                $image->save();
                $file->saveAs(\Yii::$app->BasePath . '/uploads/' . $file->name);
                $image->visa_document_name = $file->name;
                $image->emp_id = $id;
                $image->save();
            }
            ++$imageCount;
        }

        return true;

} 

Контроллер:

  $visaDocument->temp_image = UploadedFile::getInstances($visaDocument, 'temp_image');
        if(!empty($visaDocument->temp_image)){
        if (!$model->upload($visaDocument,$model->emp_id)) {
            return;

       }


      if($model->validate()){
            $model->save();
           //$this->afterSaveSetting($model);
            Yii::$app->session->setFlash('success','Request Submitted');
            return $this->redirect(\yii\helpers\Url::to(['visa-initiation/my-list']));
        }
    }

Но когда я пытаюсь загрузить несколько файлов, сохраняется только последний выбранный. Я просто следую демо http://demos.krajee.com/widget-details/fileinput.


person Dijo    schedule 22.03.2017    source источник
comment
Файлы загружаются через AJAX или напрямую?   -  person Irfan Ali    schedule 22.03.2017
comment
Через прямую загрузку   -  person Dijo    schedule 22.03.2017


Ответы (1)


Я думаю, вы должны добавить

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>

вероятно, это поможет. Вы уже включили это?

person SHIKHAR SINGH    schedule 29.03.2017