26
Май
2017

Yii2. Пустое поле загрузки файла при редактировании

Ситуация такова. Имеется поле file, которое загружает файл и сохраняет имя файла в БД. Если я редактирую запись, в которой уже имеется загруженный ранее файл, но при этом оставляю поле file нетронутым (например, требуется изменить только заголовок), то соответствующее поле в БД становится пустым. Кроме того, если поле является обязательным для заполнения, то форма вообще отказывает отправляться, требуя загрузить новый файл. Как правильно поступать в такой ситуации?

Update: добавлю код своего actionUpdate, что бы было нагляднее (по совету @YaroslavMolchan).

public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post())) {
            $directory = Service::getFileDirectory();
            $mainImage = UploadedFile::getInstance($model, 'main_image');

            if ($mainImage) {
                $uid = uniqid(time(), true);
                $model->main_image = $uid . '.' . $mainImage->extension;
                $mainImage->saveAs($directory . $model->main_image);
            }

            if ($model->save())
                return $this->redirect(['view', 'id' => $model->id]);
        } 
        return $this->render('update', [
            'model' => $model,
        ]);

    }

Источник: https://ru.stackoverflow.com/questions/671026/yii2-%D0%9F%D1%83%D1%81%D1%82%D0%BE%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B5-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0-%D0%BF%D1%80%D0%B8-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8

Тебе может это понравится...

Добавить комментарий