Добрый день. Стоит задача при создании записи в базе загружать связанную картинку, после чего должна быть возможность редактирования.
Загрузка картинки про создании новой записи обязательна, поэтому в правилах валидации я ставлю 'skipOnEmpty' => false. Но вот при редактировании записи, это условие уже не обязательно: можно загружать новую картинку, можно оставить старую. Условие в этом случае должно быть 'skipOnEmpty' => true. Но как объединить это в одной модели?
skipOnEmpty при загрузке файла
Re: skipOnEmpty при загрузке файла
Это разные эндпоинты и делаются разные формы. Но если вам лень, то можно использовать сценарии http://www.yiiframework.com/doc-2.0/yii ... rio-detail
2b||!2b Just read the instructions
Re: skipOnEmpty при загрузке файла
Вот тут нашел ещё способ:
Код: Выделить всё
$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,
]);
}
Re: skipOnEmpty при загрузке файла
'skipOnEmpty' => !$this->getIsNewRecord()