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

Как я могу получить имя зарегистрированного пользователя в yii2? Я могу получить идентификатор пользователя с помощью

Yii::$app->user->id;

и я знаю, что я могу найти имя в базе данных, но я хочу прямой путь. Имя-столбец в базе данных имеет имя "имя пользователя", но

Yii::$app->user->username;

не работает и

Yii::$app->user->name;     

тоже не работает.

Ответы

Ответ 2

В то время как ответ от @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 ?>

Я написал более подробный ответ здесь, который охватывает это немного более подробно.

Ответ 3

Он работал с Yii::$app->user->identity->username;