ошибка finfo_file(…/tmp/…): failed to open stream: Нет такого файла или каталога
Данная ошибка у меня возникла при загрузке картинки и занесении в Базу Данных.
Код контроллера:
Код:
public function actionUpdate($id)
{
$model = $this->findModel($id);
if (Yii::$app->request->post()) {
$model->img = UploadedFile::getInstance($model, 'img');
if($model->img){
$model->upload();
}
if ( $model->save()) {
Yii::$app->session->setFlash('success', "Соперник {$model->name} добавлен");
return $this->redirect(['view', 'id' => $model->id]);
}
}
return $this->render('update', [
'model' => $model,
]);
}
И возникла она в следствии того отваливалась вторая валидация в $model->save()
Тк фаил загружался и удалялся.
И валидировать уже нечего.
Исправленный код:
Код:
public function actionUpdate($id)
{
$model = $this->findModel($id);
if (Yii::$app->request->post()) {
$model->img = UploadedFile::getInstance($model, 'img');
if ( $model->save()) {
Yii::$app->session->setFlash('success', "Соперник {$model->name} добавлен");
}
if($model->img){
$model->upload();
}
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('update', [
'model' => $model,
]);
}
Теперь мы сперва записываем данные и уже потом записываем фаил.
Код метода upload:
Код:
public function upload()
{
if($this->validate()){
$path = Yii::getAlias('@webroot') . '/upload/' . $this->img->baseName . '.' . $this->img->extension;
$this->img->saveAs($path);
return true;
}else{
return false;
}
}