Ответ 1
При входе пользовательская информация будет храниться в переменной Yii::$app->user->identity
.
Для получения дополнительной информации прочитайте Документацию по аутентификации пользователя в официальном руководстве.
Как я могу получить имя зарегистрированного пользователя в 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;