MasterGerold
@MasterGerold

Почему не загружается картинка в Yii2?

Доброго времени суток! Не могу понять почему не работает загрузка картинки. Использую yii2-images.
Всё делал по инструкции
1) Установил сам модуль
2) Запустил миграцию
3)Подключил модуль
'yii2images' => [
            'class' => 'rico\yii2images\Module',
            //be sure, that permissions ok
            //if you cant avoid permission errors you have to create "images" folder in web root manually and set 777 permissions
            'imagesStorePath' => 'images/store', //path to origin images
            'imagesCachePath' => 'images/cache', //path to resized copies
            'graphicsLibrary' => 'GD', //but really its better to use 'Imagick'
            'placeHolderPath' => '@webroot/images/placeHolder.png', // if you want to get placeholder when image not exists, string will be processed by Yii::getAlias
        ],

4) Прописал поведение
public $image;
    
    public function behaviors(){
        return [
            'image' => [
                'class' => 'rico\yii2images\behaviors\ImageBehave',
            ]
        ];
    }

5) Установил правила
[['image'], 'file', 'extensions' => 'png, jpg'],
6) Описал функцию upload (но почему то saveAs подсвечивается желтым)
public function upload(){
        if($this->validate()){
            $path = 'images/store' . $this->image->baseName . '.' . $this->image->extension;
            $this->image->saveAs($path);
            return true;
        } else {
            return false;
        }
    }

7) Файл _form.php
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?=$form->field($model, 'image')->fileInput() ?>

8) В папке web создал папки images/store, images/cache
9) А вот то что в actionUpdate()
if ($model->load(Yii::$app->request->post()) && $model->save()) {
            $model->image = UploadedFile::getInstance($model, 'image');
            if ($model->image){
                $model->upload();
            }

            return $this->redirect(['view', 'id' => $model->id]);
        }

Подскажите пожалуйста что это может быть? Буду очень признателен!
  • Вопрос задан
  • 1728 просмотров
Решения вопроса 1
MasterGerold
@MasterGerold Автор вопроса
Вот где была ошибка!
У меня есть поле которое в beforeSave в моделе прописано было как:
$this->new = 0;
Потом я сделал вывод объекта который должен попадать на обработку, там было всё идеально... но вот это строчка это было единственная ошибка которую я не видел до сего дня.
[_errors:yii\base\Model:private] => Array
        (
            [new] => Array
                (
                    [0] => Значение «Новый» должно быть строкой.
                )

        )

И изменив $this->new = 0; на $this->new = '0'; У меня всё заработало! Но я не могу понять как все данные обновлялись корректно, а картинка не хотела? Но главное что всё работает и причина неисправности была найдена! Большое спасибо Максиму Темофееву за постоянную помощь!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Описал функцию upload (но почему то saveAs подсвечивается желтым)

потому что редактор понятия не имеет, что $this->image - это объект и имеет такой метод
Подскажите пожалуйста что это может быть?

Какие ошибки в debug-е?
Ответ написан
Ваш ответ на вопрос

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

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