Получить имя пользователя в yii2

Как я могу получить имя зарегистрированного пользователя в 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;