@agent1156

Как сохранить картинку в yii2?

Прочитал мануал, посмотрел видео, все равно не сохраняет. Подскажите кто знает.

Вид
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?= $form->field($model, 'image')->fileInput() ?>
...

контроллер
public function actionUpdate($id)
{
$model = $this->findModel($id);

if ($model->load(Yii::$app->request->post())) {

$model->image = UploadedFile::getInstance($model, 'image');
if( $model->image ){
$model->upload();
}

Yii::$app->session->setFlash('success', "Товар {$model->name} обновлен");
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}

модель
public function upload(){
if($this->validate()){
$path = 'upload/store/' . $this->image->baseName . '.' . $this->image->extension;
$this->image->saveAs($path);
$this->attachImage($path, true);
@unlink($path);
return true;
}else{
return false;
}
}
  • Вопрос задан
  • 681 просмотр
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Проверьте для начала права на запись директории.
Вторым пунктом проверяйте путь к директории. Где у Вас расположена директория для загрузки?
Допустим, если в директории views, то путь может быть похожим на этот
Yii::$app->basePath.'/views/check-text/uploads'
Что бы не писать длинный путь, можно сделать псевдоним
Yii::setAlias('@checktext', Yii::$app->basePath.'/views/check-text/uploads');

и использовать уже этот псевдоним
$this->path = Yii::getAlias('@checktext');
//....
$this->fileUpload->saveAs($this->path . '/' . $this->filename);


p.s. В модели UploadForm правила валидации есть?
Ответ написан
Комментировать
@agent1156 Автор вопроса
На локальном сервере Windows тоже могут быть закрыты права на запись?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы