Как загружать несколько разных файлов за раз, при этом получая их имена в yii2?

У меня есть приложение yii2(страница), на которую я хочу выводить некоторое записанное событие через видео и гиф-анимацию одинакового содержания(слева видео, справа аналогичная гиф), чтобы они были синхронизированы. Для хранения таких событий я использую бд, со следующей структурой:

- id:int
- date:date
- videoname:string
- gifname:string

Добавляю записи в таблицу с помощью формы следующего вида:

- дата: textField
- видео-файл: fileInput
- гиф-файл: fileInput

Также у меня есть модель загрузки файла:

class UploadForm extends Model
{
    /**
     * @var UploadedFile
     */
    public $imageFile;

    public function rules()
    {
        return [
            [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'mp4, webm, gif, png, jpg'],
        ];
    }

    public function upload()
    {
        if ($this->validate()) {
            $this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
            return ($this->imageFile->baseName . '.' . $this->imageFile->extension);
        } else {
            return null;
        }
    }
}

Далее в контроллере я пытаюсь получать имя загружаемого файла и передавать его в videoname и gifname, чтобы в дальнейшем выводить на страницу по имени.

    $file = new UploadForm();
    $model = new Interest();

        if ($this->request->isPost) {
            $file->imageFile = UploadedFile::getInstance($file, 'imageFile');
            if ($file->upload()) {
                echo "File uploading complete";
            }
        }

        if ($this->request->isPost) {
            if ($model->load($this->request->post())) {
                $model->filename = $file->imageFile->baseName.'.'.$file->imageFile->extension; //<= тут передаю имя файла в бд
                if ($model->save()) {
                    return $this->redirect(['view', 'id' => $model->id]);
                }
            }
        } else {
            $model->loadDefaultValues();
        }

Когда я пытаюсь сделать такое с одним файлом все получается, но с двумя же мне приходится создавать в контроллере несколько экземпляров класса UploadForm и это перестает работать, либо загружается последний из файлов, либо вовсе выдает ошибки.

Хотел узнать, как это правильно делать?

Знаю про вариант загрузки нескольких файлов с помощью 'multiple' => true, но не понимаю как в этом случае получать имена каждого конкретного загружаемого файла.


Ответы (0 шт):