Помогите разобратся с моделями загрузки картинок

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Помогите разобратся с моделями загрузки картинок

Сообщение alexa777 »

Привет. Я сделал отдельную таблицу для картинок images и модель Images для нее, в модели я инициировал переменную public $image.
Пытаюсь первым делом сделать загрузку картинки для профиля, за профиль у меня отвечает ProfileController.php который опирается на модель User.php.

Короче делаю я в ProfileController.php экшен

Код: Выделить всё

use common\models\Images;

....
    public function actionUpload(){
        
        $model = new Images();
        
        if(Yii::$app->request->isPost){
            $model->image = UploadedFile::getInstance($model, 'image');
            $model->upload();
            return;
        }else {
            return $this->render('index', [
            'model' => $this->findModel(),
            ]);
        }
   }


....

А во вьюхе поле

Код: Выделить всё

<?= $form->field($model, 'image')->fileInput() ?>

На выходе получаю ошибку

Код: Выделить всё

Unknown Property – yii\base\UnknownPropertyException
Getting unknown property: common\models\User::image
Подскажите как быть? я же в контролере указал использовать еще и модель use common\models\Images; но контролер ее не видит.
ShNURoK
Сообщения: 168
Зарегистрирован: 2012.04.12, 05:44
Контактная информация:

Re: Помогите разобратся с моделями загрузки картинок

Сообщение ShNURoK »

Что такое $this->findModel()? Это модель User. Отправляйте туда $model, который Images
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Помогите разобратся с моделями загрузки картинок

Сообщение alexa777 »

ShNURoK писал(а): 2018.02.23, 12:22 Что такое $this->findModel()? Это модель User. Отправляйте туда $model, который Images
А если там уже есть

Код: Выделить всё

  private function findModel()
    {
        return User::findOne(Yii::$app->user->identity->getId());
    }
Можно ли совместить? и самое главное как правильно это сделать?

Вот так нормально ?

Код: Выделить всё

private function findModel()
    {
        return User::findOne(Yii::$app->user->identity->getId());
        if (($model = Images::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
       
      
    }
ShNURoK
Сообщения: 168
Зарегистрирован: 2012.04.12, 05:44
Контактная информация:

Re: Помогите разобратся с моделями загрузки картинок

Сообщение ShNURoK »

Ничего менять в findModel не надо.

Код: Выделить всё

return $this->render('index', [
            'user' => $this->findModel(),
            'model' => $model,
            ]);
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Помогите разобратся с моделями загрузки картинок

Сообщение alexa777 »

ShNURoK писал(а): 2018.02.23, 13:18 Ничего менять в findModel не надо.

Код: Выделить всё

return $this->render('index', [
            'user' => $this->findModel(),
            'model' => $model,
            ]);
Попробовал это вариант, пробовал и по другому колдовать, нечего не получается, ошибка та же. Не могли бы вы написать вариант как надо а то я только учусь и мне в голову не приходит пока как это сделать
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Помогите разобратся с моделями загрузки картинок

Сообщение alexa777 »

alexa777 писал(а): 2018.02.23, 16:30
ShNURoK писал(а): 2018.02.23, 13:18 Ничего менять в findModel не надо.

Код: Выделить всё

return $this->render('index', [
            'user' => $this->findModel(),
            'model' => $model,
            ]);
Попробовал это вариант, пробовал и по другому колдовать, нечего не получается, ошибка та же. Не могли бы вы написать вариант как надо а то я только учусь и мне в голову не приходит пока как это сделать
Сейчас только дошло что нужно править Индекс экшен в это контролере, потому что я его вызываю, он у меня выглядит так

Код: Выделить всё

   public function actionIndex()
    {
        return $this->render('index', [
            'model' => $this->findModel(),
        ]);
    }
 
    
Ответить