Освоить загрузку файлов оказалось просто.
Остановился на замене этого файла. Конкретно для данного проекта не критично удалять загруженный файл.
Конкретно:
после загрузки файла, поле fileInput, не имеет файла следовательно после fileInput остаётся пустым и при сохранении запись о файле из бд. стирается.
Сам input по умолчания не имеет свойства value. Как обходят эту проблему?
<?= $form->field($model, 'image')->fileInput() ?>
//вариант 1
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$namefile = date("U");
$model->image = UploadedFile::getInstance($model, 'image');
$model->image->saveAs('images/'.$model->image->baseName.'_'.$namefile.'.'.$model->image->extension );
$model->image = 'images/'.$model->image->baseName.'_'.$namefile.'.'.$model->image->extension;
$model->save();
return $this->redirect(['view', 'id' => $model->ID]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
//вариант 2
if ($model->load(Yii::$app->request->post()) && $model->save()) {
//represent the uploaded file as an instance
$namefile = date("U");
$model->image = UploadedFile::getInstance($model, 'image');
//save path to image in db
if($model->image){
$model->image->saveAs('images/'.$model->image->baseName.'_'.$namefile.'.'.$model->image->extension );
$model->image = '/images/' . $model->image->baseName . '.' . $model->image->extension;
}
//save changes in db
$model->save();
//upload image on server
if($model->image){
$model->upload();
}
return $this->redirect(['view', 'id' => $model->ID]);
} else {
return $this->render('update', [
'model' => $model,
]);
}