Задать вопрос
f_society
@f_society
по граблям новичка

Yii2-images ошибка при добавлении getPrimaryKey() в чем проблема?

В общем я недавно работаю в yii2. Но проблем особых не было до того как я установил yii2-images.
Проблема в добавлении картинок, мой проект интернет магазин.
При добавлении выходит вот это:

PHP Fatal Error – yii\base\ErrorException
Call to a member function getPrimaryKey() on a non-object

/* @var $img Image */
        $img->setMain(true);
        $img->urlAlias = $this->getAliasString() . '-' . $counter;
        $img->save();
 
 
        $images = $this->owner->getImages();
        foreach ($images as $allImg) {
 
            if ($allImg->getPrimaryKey() == $img->getPrimaryKey()) {
                continue;
            } else {
                $counter++;
            }
 
            $allImg->setMain(false);
            $allImg->urlAlias = $this->getAliasString() . '-' . $counter;
            $allImg->save();
        }

И картинки не добавляются. только после перезагрузки страницы происходит сие чудо.
пробовал 2 версии yii2.0.14.2 и yii2.0.7.
Уже второй день мучаюсь. пожалуйста подскажите в чем проблема. или ткните на нормальное расширение с хорошим функционалом.
Проект уже почти дописал осталось реализовать только добавление картинок.
Помогите ребята!
  • Вопрос задан
  • 325 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
f_society
@f_society Автор вопроса
по граблям новичка
в общем я просто закоментил проверку getPrimaryKey()
получилось так:
public function setMainImage($img)
    {
        if ($this->owner->primaryKey != $img->itemId) {
            throw new \Exception('Image must belong to this model');
        }
        $counter = 1;
        /* @var $img Image */
        $img->setMain(true);
        $img->urlAlias = $this->getAliasString() . '-' . $counter;
        $img->save();


        $images = $this->owner->getImages();
        foreach ($images as $allImg) {

//            if ($allImg->getPrimaryKey() == $img->getPrimaryKey()) {
//                continue;
//            } else {
//                $counter++;
//            }

            continue;
            $allImg->setMain(false);
            $allImg->urlAlias = $this->getAliasString() . '-' . $counter;
            $allImg->save();
        }

        $this->owner->clearImagesCache();
    }

картинки добавляются как положено

но вот с выводом картинок все-равно беда.
пока что буду использовать findAll()
чтобы вытащить картинки из базы
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
$allImg не содержит объект. Проверьте что у Вас в var_dump ($images); видимо null и ошибки в php.ini отключены, поэтому Вас еще не завалило ими. Всегда, обязательно, даже если очень не хочется, при любых обстоятельствах, когда идет разработка в php.ini должно быть error_reporting = E_ALL
Кроме этого, что бы было удобно - включаем debug панель, которая есть в yii2, как модуль из коробки:
www.yiiframework.com/doc-2.0/ext-debug-index.html
Там есть ответы на 99% вопросов, почему не работает.
Еще как вариант, замените
$images = $this->owner->getImages();
на
$images = $this->owner->getImages()->all();
Так как там вместо массива объектов может быть связь
Ответ написан
Ваш ответ на вопрос

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

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