kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Из-за чего ошибка при попытке регистрации пользователя в Yii2?

Версия Yii2 basic 2.0.9, взял файлы SignupForm.php и signup.php из версии advanced, поправил все зависимости, в SiteController.php и User.php добавил недостающие функции. После нажатия кнопки "зарегистрироваться" появляется ошибка в дебагере:

exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: yii\web\Application::app' in D:\OpenServer\domains\yii2sp\vendor\yiisoft\yii2\base\Component.php:143
Stack trace:
#0 D:\OpenServer\domains\yii2sp\vendor\yiisoft\yii2\di\ServiceLocator.php(73): yii\base\Component->__get('app')
#1 D:\OpenServer\domains\yii2sp\models\User.php(79): yii\di\ServiceLocator->__get('app')
#2 D:\OpenServer\domains\yii2sp\models\SignupForm.php(63): app\models\User->generateAuthKey()
#3 D:\OpenServer\domains\yii2sp\controllers\SiteController.php(131): app\models\SignupForm->signup()
#4 [internal function]: app\controllers\SiteController->actionSignup()
#5 D:\OpenServer\domains\yii2sp\vendor\yiisoft\yii2\base\InlineAction.php(55): call_user_func_array(Array, Array)
#6 D:\OpenServer\domains\yii2sp\vendor\yiisoft\yii2\base\Controller.php(154): yii\base\InlineAction->runWithParams(Array)
#7 D:\OpenServer\domains\yii2sp\vendor\yiisoft\yii2\base\Module.php(454): yii\base\Controller->runAction('signup', Array)
#8 D:\OpenServer\domains\yii2sp\vendor\yiisoft\yii2\web\Application.php(87): yii\base\Module->runAction('site/signup', Array)
#9 D:\OpenServer\domains\yii2sp\vendor\yiisoft\yii2\base\Application.php(375): yii\web\Application->handleRequest(Object(yii\web\Request))
#10 D:\OpenServer\domains\yii2sp\web\index.php(12): yii\base\Application->run()
#11 {main}

На сайте следующая ошибка:
Getting unknown property: yii\web\Application::app

in D:\OpenServer\domains\yii2sp\models\User.php
public function generateAuthKey(){
        $this->auth_key = Yii::$app->app->security->generateRandomString();
    }

in D:\OpenServer\domains\yii2sp\models\SignupForm.php
$user->generateAuthKey();
in D:\OpenServer\domains\yii2sp\controllers\SiteController.php
if ($user = $model->signup()) {
in D:\OpenServer\domains\yii2sp\web\index.php
(new yii\web\Application($config))->run();
  • Вопрос задан
  • 482 просмотра
Решения вопроса 1
bitver
@bitver
В SingupForm есть в правилах валидации похожее на это.
['email', 'unique', 'targetClass' => '\common\models\User']

Найдёте что изменить?
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
kimono
@kimono
Web developer
Проверьте, что User в лежит по пути common/models/ (в basic и advanced могут отличаться), и что у User указан именно этот namespace.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Class '\common\models\User' не существует у Вас. Исправьте namespace в SignupForm. Папка common существует в advanced, но ее нет в basic
Ответ написан
bagiroff777
@bagiroff777
Веб-разработчик
У вас же явно в стектрейсе указано, где ошибка - Yii::$app->app->security->generateRandomString();
Выделенное жирным - удалить.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы