2016-08-17 127 views
-1

我是Yii框架的新用戶,我想獲取當前登錄用戶的用戶詳細信息,如用戶名,用戶名&他的頭像,並且希望將該數據添加到頭標記中。我在Yii上使用基本版本。在Yii框架中獲取用戶詳細信息

我怎樣才能得到這個細節?

+0

你可以參考這個鏈接,集會議,並在Yii中獲取會話值。 http://stackoverflow.com/questions/14197462/set-session-in-yii-framework/14197600 –

回答

-1

嗨使用setState方法。

在你UserIdentity.php

public function authenticate() 
{ 
    $user=User::model()->find('LOWER(username)=?',array(strtolower($this->username))); 
    if($user===null) 
     $this->errorCode=self::ERROR_USERNAME_INVALID; 
    else if(!$user->validatePassword($this->password)) 
     $this->errorCode=self::ERROR_PASSWORD_INVALID; 
    else 
    { 
     $this->_id=$user->id; 
     $this->username=$user->username; 
     $this->setState("userid",$user->user_id);// set States like this 
     $this->setState("username",$user->username); 
     $this->setState("avatar",$user->avatar); 
     $this->errorCode=self::ERROR_NONE; 
    } 
    return $this->errorCode; 
} 

現在在任何地方得到這些像

$userid = Yii::app()->user->getState('userid'); 
+0

這是錯誤的。您可以隨時訪問'\ Yii :: $ app-> user-> identity'來獲取實際的用戶模型。 – Twisted1919

+0

我正在使用Yii 1.1,它對我的​​工作很好。 – user1234

+0

OP說'我在Yii上使用基本版本,這意味着他使用yii2而不是1。 – Twisted1919

0

Yii的使用IdentityInterface處理會話的用戶數據。 讓我們一步一步來。

您可以創建一個類,將其稱爲User,它實現IdentityInterface。如果連接數據庫,你可以將其擴展到ActiveRecord,完全取決於你的架構。

class User extends ActiveRecord implements IdentityInterface 
{ 
    ... 
} 

將配置細節添加到配置文件main.php中。我在advance模板上工作,因此它位於front/config中。檢查它的基本。

'components' => [ 
    ... 

    'user' => [ 
     'identityClass' => 'common\models\User', 
     'enableAutoLogin' => true, 
     'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true], 
    ], 

    .... 
]; 

這告訴應用程序從普通\ model \ User類中獲取用戶會話的詳細信息。它的共同之處在於我使用相同的類作爲後端和前端,而基本模板中並非如此。

製作用戶登錄到應用程序

當你的用戶類的對象,憑有效的用戶名和密碼,使用下面的代碼登錄用戶。

Yii::$app->user->login($user); 

獲得用戶的價值你下面的示例

的Yii :: $ APP->用戶> isGuest - 這告訴你用戶是否登錄或沒有。

的Yii :: $ APP->用戶> ID - 獲取用戶

的Yii :: $ APP->用戶> identity->名的ID - Yii::$app->user->identity會給你訪問到User類的整個對象。如果您有任何其他屬性,請使用該標識並獲取這些標識。例如,你可以有'頭像',它存儲的頭像網址,你可以通過Yii::$app->user->identity->avatar得到它。

最後註銷

Yii::$app->user->logout();