如何获取yii2中登录用户的名称? 我可以得到用户ID与在yii2中获取用户名称
Yii::$app->user->id;
,我知道我可以在数据库中找到名字,但我希望有一个直接的方式。 在数据库中的名称列的名称为“用户名”,但
Yii::$app->user->username;
不工作,
Yii::$app->user->name;
也不起作用。
如何获取yii2中登录用户的名称? 我可以得到用户ID与在yii2中获取用户名称
Yii::$app->user->id;
,我知道我可以在数据库中找到名字,但我希望有一个直接的方式。 在数据库中的名称列的名称为“用户名”,但
Yii::$app->user->username;
不工作,
Yii::$app->user->name;
也不起作用。
登录时,用户信息将被存储在Yii::$app->user->identity
变量中。
欲了解更多信息,请阅读官方指南中的User Authentication documentation。
虽然@thepeach的答案有效,但您实际上可以扩展用户组件并添加自己的函数,以便您可以像最初尝试的那样通过Yii::$app->user->something
获取它们。
我喜欢从一开始就这样扩展,所以我准备好添加自定义功能而不必重构任何代码。它不愿意以某种方式做事,然后必须返回并修复100个代码点,因为稍后您会更改它。
首先,在你的配置定义用户组件类:
'components' => [
'user' => [
'class' => 'app\components\User', // extend User component
],
],
然后在你的components
目录中创建User.php
。如果您还没有创建该目录,请在您的应用程序根目录中创建它。
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 ?>
我写了一个更详细的回答here,覆盖这多一点的深度。
您可以使用'$ this-> identity'而不是'\ Yii :: $ app-> user-> identity'。 – vher2