Вызовы Yii::$app->user->[anything] приводят к ошибке «Неопределенная переменная: пользователь». ⇐ Php
-
Anonymous
Вызовы Yii::$app->user->[anything] приводят к ошибке «Неопределенная переменная: пользователь».
Недавно я перенес несколько сайтов Yii2 на Cloudways, запустив на сервере PHP7.4. (Я откладываю обновление до php8, пока эти проблемы не будут решены.)
По какой-то причине я получаю сообщение об ошибке «Неопределенная переменная: пользователь» каждый раз, когда я вызываю Yii::$app->user->[anything]. Поэтому я больше не могу использовать Yii::$app->user->isAdmin или Yii::$app->user->isGuest. Даже если пользователь входит в систему, эти вызовы вызывают ошибку «Неопределенная переменная: пользователь».
Любые предложения будут оценены по достоинству. Спасибо!
В «web.php»:
'компоненты' => [ 'пользователь' => [ 'identityClass' => 'приложение\модели\Пользователь', 'class' => 'app\comComponents\User', // расширяем компонент User 'enableAutoLogin' => правда, ], и
'модули' => [ 'пользователь' => [ 'класс' => 'декстриум\пользователь\Модуль', 'enableUnconfirmedLogin' => true, 'стоимость' => 12, 'rememberFor' => 1209600, 'админы' => ['ххххх','ххххх'], 'модельКарта' => [ 'Пользователь' => 'приложение\модели\Пользователь', 'RegistrationForm' => 'app\models\RegistrationForm', ], ], В /comComponents/User.php
Класс User расширяет \yii\web\User { публичная функция getUsername() { вернуть Yii::$app->user->identity->username; } публичная функция getName() { вернуть Yii::$app->user->identity->name; } публичная функция getIsAdmin() { $roles = Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId()); return in_array('admin',array_keys($roles)); } } В /models/User.php
Класс User расширяет BaseUser { публичная функция getUsername() { вернуть $this->profile->name; } публичная функция getAuthorname() { вернуть $this->getUsername(); } публичная функция getAvatar() { вернуть $this->profile->getAvatarUrl(75); } общедоступная статическая функция findIdentityByAccessToken ($ token, $ type = null) { return static::findOne(['access_token' => $token]); } публичная функция beforeSave($insert) { если (родитель::beforeSave($insert)) { если ($this->isNewRecord) { $this->auth_key = \Yii::$app->security->generateRandomString(); } вернуть истину; } вернуть ложь; } }
Недавно я перенес несколько сайтов Yii2 на Cloudways, запустив на сервере PHP7.4. (Я откладываю обновление до php8, пока эти проблемы не будут решены.)
По какой-то причине я получаю сообщение об ошибке «Неопределенная переменная: пользователь» каждый раз, когда я вызываю Yii::$app->user->[anything]. Поэтому я больше не могу использовать Yii::$app->user->isAdmin или Yii::$app->user->isGuest. Даже если пользователь входит в систему, эти вызовы вызывают ошибку «Неопределенная переменная: пользователь».
Любые предложения будут оценены по достоинству. Спасибо!
В «web.php»:
'компоненты' => [ 'пользователь' => [ 'identityClass' => 'приложение\модели\Пользователь', 'class' => 'app\comComponents\User', // расширяем компонент User 'enableAutoLogin' => правда, ], и
'модули' => [ 'пользователь' => [ 'класс' => 'декстриум\пользователь\Модуль', 'enableUnconfirmedLogin' => true, 'стоимость' => 12, 'rememberFor' => 1209600, 'админы' => ['ххххх','ххххх'], 'модельКарта' => [ 'Пользователь' => 'приложение\модели\Пользователь', 'RegistrationForm' => 'app\models\RegistrationForm', ], ], В /comComponents/User.php
Класс User расширяет \yii\web\User { публичная функция getUsername() { вернуть Yii::$app->user->identity->username; } публичная функция getName() { вернуть Yii::$app->user->identity->name; } публичная функция getIsAdmin() { $roles = Yii::$app->authManager->getRolesByUser(Yii::$app->user->getId()); return in_array('admin',array_keys($roles)); } } В /models/User.php
Класс User расширяет BaseUser { публичная функция getUsername() { вернуть $this->profile->name; } публичная функция getAuthorname() { вернуть $this->getUsername(); } публичная функция getAvatar() { вернуть $this->profile->getAvatarUrl(75); } общедоступная статическая функция findIdentityByAccessToken ($ token, $ type = null) { return static::findOne(['access_token' => $token]); } публичная функция beforeSave($insert) { если (родитель::beforeSave($insert)) { если ($this->isNewRecord) { $this->auth_key = \Yii::$app->security->generateRandomString(); } вернуть истину; } вернуть ложь; } }
Мобильная версия