簡體   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