Как я могу получить имя зарегистрированного пользователя в yii2? Я могу получить идентификатор пользователя с помощью
Yii::$app->user->id;
и я знаю, что я мог бы найти имя в базе данных, но хочу прямой путь. Имя-столбец в базе данных имеет имя «имя пользователя», но
Yii::$app->user->username;
не работает и
Yii::$app->user->name;
тоже не работает.
При входе пользовательская информация будет храниться в переменной Yii::$app->user->identity
.
Для получения дополнительной информации прочитайте документацию по аутентификации пользователей в официальном руководстве.
Хотя ответ от @thepeach работает, вы можете фактически расширить компонент User и добавить свои собственные функции, чтобы вы могли получить их через Yii::$app->user->something
как вы изначально пытались сделать.
Мне нравится с самого начала распространять такие вещи, поэтому я готов добавить пользовательскую функциональность без необходимости реорганизации любого кода. Это отстойно делать что-то в одном направлении, затем нужно вернуться и исправить 100 пятен кода, потому что вы изменили его позже.
Сначала определите класс пользовательского компонента в вашем config:
'components' => [ 'user' => [ 'class' => 'app\components\User', // extend User component ], ],
Затем создайте User.php
в каталоге components
. Если вы не создали этот каталог, создайте его в своем корне приложения.
User.php
<?php namespace app\components; use Yii; /** * Extended yii\web\User * * This allows us to do "Yii::$app->user->something" by adding getters * like "public function getSomething()" * * So we can use variables and functions directly in `Yii::$app->user` */ class User extends \yii\web\User { public function getUsername() { return \Yii::$app->user->identity->username; } public function getName() { return \Yii::$app->user->identity->name; } }
Теперь вы можете получить доступ к ним через Yii::$app->user->something
.
Например, поместите это в одно из ваших представлений и получите доступ к странице в своем браузере:
<?= \Yii::$app->user->username ?>
Здесь я написал более подробный ответ, который охватывает это немного более подробно.
Он работал с Yii::$app->user->identity->username;