繁体   English   中英

获取yii2中的用户名

[英]Get the name of the user in 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 个代码点,因为你后来改变了它。

首先,在您的配置中定义一个用户组件类:

'components' => [
    'user' => [
        'class' => 'app\components\User', // extend User component
    ],
],

然后在您的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 ?>
$user_id = Yii::$app->user->id;
$user_name = User::find()->where(['id'=>$user_id])->one()->username;

我总是更喜欢下面的代码来查找当前用户。 只使用这个,你就会得到身份。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM