在 yii2 中获取用户的名称
如何在 yii2 中获取登录用户的名称?我可以获取用户 ID
Yii::$app->user->id;
我知道我可以在数据库中找到这个名字,但我想要一个直接的方式。数据库中的名称列具有名称“用户名”,但是
Yii::$app->user->username;
不起作用,并且
Yii::$app->user->name;
也不起作用。
如何在 yii2 中获取登录用户的名称?我可以获取用户 ID
Yii::$app->user->id;
我知道我可以在数据库中找到这个名字,但我想要一个直接的方式。数据库中的名称列具有名称“用户名”,但是
Yii::$app->user->username;
不起作用,并且
Yii::$app->user->name;
也不起作用。
虽然@thepeach的答案有效,但您实际上可以扩展User组件并添加自己的函数,以便您可以像最初尝试的那样通过它们。Yii::$app->user->something
我喜欢从一开始就扩展这样的东西,所以我已经准备好添加自定义功能,而不必重构任何代码。以一种方式做事很糟糕,然后必须返回并修复100个代码点,因为你后来改变了它。
首先,在配置中定义一个用户组件类:
'components' => [
'user' => [
'class' => 'app\components\User', // extend User component
],
],
然后在您的目录中创建。如果尚未创建此目录,请在应用根目录中创建它。User.php
components
用户.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 ?>
我在这里写了一个更详细的答案,它更深入地介绍了这一点。