[英]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.