Вопрос по расширению EAuth

Добрый день.

Я новичек в Yii. Пытюсь использовать расширение EAuth.

Совместно использую модуль (yii-user) yii-user.2mx.org

И при авторизации с помощью аккаунта в Google, когда появляется модальное окно возникает ошибка


Fatal error: Call to a member function getAttributes() on a non-object in \protected\modules\user\components\WebUser.php on line 43

Подскажите куда смотреть?

modules\user\components\WebUser.php on line 43 – Что здесь в коде?

Предположительно - какой-то ожидаемый объект в реальности таковым не является (call to function on a non-object).

Вызов порождающий исключение $user->profile->getAttributes() (line 43)

Функция которая порождает исключение




    public function updateSession() {

        $user = Yii::app()->getModule('user')->user($this->id);

        $userAttributes = CMap::mergeArray(array(

                                                'email'=>$user->email,

                                                'username'=>$user->username,

                                                'create_at'=>$user->create_at,

                                                'lastvisit_at'=>$user->lastvisit_at,

                                           ),$user->profile->getAttributes());

        foreach ($userAttributes as $attrName=>$attrValue) {

            $this->setState($attrName,$attrValue);

        }

    }



во вложении сам файл

Так понимаю, $user->profile - это отношение к другой модели?

Как выглядит метод relations() модели $user?

Что возвращает $user->profile при вар_дампе? – по всей видимости, или null, или массив - вместо ожидаемого объекта.


	/**

	 * @return array relational rules.

	 */

	public function relations()

	{

        $relations = Yii::app()->getModule('user')->relations;

        if (!isset($relations['profile']))

            $relations['profile'] = array(self::HAS_ONE, 'Profile', 'user_id');

        return $relations;

	}



файлы модели User и Profile во вложении

Возвращает NULL

Ну, все логично. Вы загружаете $user у которого нет записи в таблице profile, соответственно $user->profile = null, но никак не объект класса Profile, т.ч. вызов метода getAttributes() выдает соответствующую ошибку.

В таком случае, либо всегда должен быть соответствующий профиль для каждого $user, либо в коде предусмотреть, что профиль не всегда существует, и не вызывать метод $user->profile->getAttributes() в том случае, когда профиля нет.

Спасибо большое за помощь.