在Yii框架中获取用户详细信息

在Yii框架中获取用户详细信息,yii,Yii,我是Yii框架的新手,我想获得当前登录用户的用户详细信息,如userid、username和他的头像,并想在head标签中添加这些数据。我在Yii上使用基本版本 如何获取此详细信息?请使用setState方法 在您的UserIdentity.php中 public function authenticate() { $user=User::model()->find('LOWER(username)=?',array(strtolower($this->username)))

我是Yii框架的新手,我想获得当前登录用户的用户详细信息,如userid、username和他的头像,并想在head标签中添加这些数据。我在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使用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],
    ],

    ....
];
这告诉应用程序从common\model\user类获取用户会话详细信息。它的共同点是,我对后端和前端使用相同的类,而在基本模板中则不是这样

让用户登录到应用程序

当您获得用户类的对象时,使用有效的用户名和密码,使用以下代码登录用户

Yii::$app->user->login($user);
要获取用户的值,请使用以下示例

Yii::$app->user->isGuest-这会告诉您用户是否登录

Yii::$app->user->id-获取用户的id

Yii::$app->user->identity->name-
Yii::$app->user->identity
将允许您访问用户类的整个对象。如果您有任何其他属性,请使用标识并获取这些属性。例如,你可以拥有“阿凡达”,它存储了阿凡达url,你可以通过
Yii::$app->user->identity->avatar
获得它

最后退出

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

您可以参考此链接以设置会话并在YII中获取会话值。这是错误的。您可以随时访问
\Yii::$app->user->identity
以获取实际的用户模型。OP说
我在Yii上使用的是基本版本。
这意味着他使用的是yii2而不是1。@Twisted1919您能告诉我Yii的基本版本是yii2而不是yii1的链接吗,请看这里:,搜索“基本”吗措辞。@Twisted1919很好,但我的运气不好,我找不到基本版本的单词,可能是他们忘了写基本版本:)