如何獲取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