获取用户信息 - dektrium / yii2-user Yii2

时间:2016-02-10 07:24:14

标签: php yii2 yii2-user

我在我的应用程序中使用了dektrium/yii2-user。 在 vendor / dektrium User.php 中有一个名为getID()的方法,Yii::$app->user->getID()可以访问此方法并返回{{1登录用户。

但是,还有另一种名为id的方法,其功能是返回当前登录用户的完整配置文件详细信息。但是,这种方法会产生500内部服务器错误。

getProfile()

我用谷歌搜索了这个问题但没有发现任何事情......帮助我的人们......

3 个答案:

答案 0 :(得分:6)

我相信您可以像这样获取当前登录用户的个人资料:

Yii::$app->user->identity->profile;

因为Yii::$app->user->identity返回当前用户 - User对象。

您将Yii的Web用户对象与用户模型混淆:)

编辑:

Yii::$app->user指的是yii\web\User - 管理用户身份验证状态的应用程序组件。

您要求用户组件获取“身份”,即:

  

IdentityInterface是应由提供身份信息的类实现的接口

在这种情况下,Dektrium用户模型实现了IdentityInterface,您可以在其上调用getId并获取用户模型的ID。

class User extends ActiveRecord implements IdentityInterface

此代码:

Yii::$app->user->identity->profile;

将返回与Profile

相关联的User模型数据

您可以直接访问它的字段:

Yii::$app->user->identity->profile->location;

有关详细信息,请参阅dektrium\user\models\Profile

人们总是对yii \ web \ User,IdentityInterface和User模型感到困惑。 我自己包括:p

答案 1 :(得分:1)

如果您有一个用户实例( $ user ),您可以使用 getProfile ()函数:

$profile = $user->getProfile()->one();

它返回该用户的个人资料记录。

如果您没有用户实例,但ID( $ user_id ),则可以直接获取Profile模型的实例:

$profile = Profile::find()->where(['user_id' => $user_id)->one();

Yii::$app->user是应用中定义的用户模型的接口(在本例中为dektrium用户模型):http://www.yiiframework.com/doc-2.0/yii-web-user.html

总结:

$user_id = Yii::$app->user->getID();
$profile = Profile::find()->where(['user_id' => $user_id)->one();

答案 2 :(得分:0)

试试这个

\app\models\User::findOne(Yii::$app->user->identity->id)->profile;