我是Yii框架的新用戶,我想獲取當前登錄用戶的用戶詳細信息,如用戶名,用戶名&他的頭像,並且希望將該數據添加到頭標記中。我在Yii上使用基本版本。在Yii框架中獲取用戶詳細信息
我怎樣才能得到這個細節?
我是Yii框架的新用戶,我想獲取當前登錄用戶的用戶詳細信息,如用戶名,用戶名&他的頭像,並且希望將該數據添加到頭標記中。我在Yii上使用基本版本。在Yii框架中獲取用戶詳細信息
我怎樣才能得到這個細節?
嗨使用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');
這是錯誤的。您可以隨時訪問'\ Yii :: $ app-> user-> identity'來獲取實際的用戶模型。 – Twisted1919
我正在使用Yii 1.1,它對我的工作很好。 – user1234
OP說'我在Yii上使用基本版本,這意味着他使用yii2而不是1。 – Twisted1919
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();
你可以參考這個鏈接,集會議,並在Yii中獲取會話值。 http://stackoverflow.com/questions/14197462/set-session-in-yii-framework/14197600 –