skipOnEmpty при загрузке файла

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
azz
Сообщения: 197
Зарегистрирован: 2016.07.06, 17:20

skipOnEmpty при загрузке файла

Сообщение azz »

Добрый день. Стоит задача при создании записи в базе загружать связанную картинку, после чего должна быть возможность редактирования.
Загрузка картинки про создании новой записи обязательна, поэтому в правилах валидации я ставлю 'skipOnEmpty' => false. Но вот при редактировании записи, это условие уже не обязательно: можно загружать новую картинку, можно оставить старую. Условие в этом случае должно быть 'skipOnEmpty' => true. Но как объединить это в одной модели?
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: skipOnEmpty при загрузке файла

Сообщение zabachok »

Это разные эндпоинты и делаются разные формы. Но если вам лень, то можно использовать сценарии http://www.yiiframework.com/doc-2.0/yii ... rio-detail
2b||!2b Just read the instructions
azz
Сообщения: 197
Зарегистрирован: 2016.07.06, 17:20

Re: skipOnEmpty при загрузке файла

Сообщение azz »

Вот тут нашел ещё способ:

Код: Выделить всё

    $model = $this->findModel($id);
    $current_image = $model->featured_image;
    if ($model->load(Yii::$app->request->post())) {         
        $image= UploadedFile::getInstance($model, 'featured_image');
        if(!empty($image) && $image->size !== 0) {
            //print_R($image);die;
            $image->saveAs('uploads/' . $image->baseName . '.' .$image->extension);
            $model->featured_image = 'uploads/'.$image->baseName.'.'.$image->extension; 
        }
        else
            $model->featured_image = $current_image;
        $model->save();
        return $this->redirect(['update', 'id' => $model->module_id]);
    } else {
        return $this->render('add', [
            'model' => $model,
        ]);
    }
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: skipOnEmpty при загрузке файла

Сообщение zabachok »

As you wish
2b||!2b Just read the instructions
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: skipOnEmpty при загрузке файла

Сообщение urichalex »

'skipOnEmpty' => !$this->getIsNewRecord()
azz
Сообщения: 197
Зарегистрирован: 2016.07.06, 17:20

Re: skipOnEmpty при загрузке файла

Сообщение azz »

urichalex писал(а): 2017.09.13, 16:48 'skipOnEmpty' => !$this->getIsNewRecord()
остроумно :)
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: skipOnEmpty при загрузке файла

Сообщение urichalex »

azz писал(а): 2017.09.15, 10:29
urichalex писал(а): 2017.09.13, 16:48 'skipOnEmpty' => !$this->getIsNewRecord()
остроумно :)
Работает
Ответить