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

Cho*_*oxx 3 php yii2 yii2-user

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

但是,还有另一种方法,getProfile()其功能是返回当前登录用户的完整配置文件详细信息.但是,这种方法给出了500内部服务器错误.

exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: yii\web\User::getProfile()' in ... ...
Run Code Online (Sandbox Code Playgroud)

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

jac*_*moe 6

我相信您可以获得当前登录用户的个人资料,如下所示:

Yii::$app->user->identity->profile;
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:

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

您要求User组件获取"身份",即:

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

在这种情况下,Dektrium User模型实现了IdentityInterface,您可以调用getId它并获取User模型的id.

class User extends ActiveRecord implements IdentityInterface
Run Code Online (Sandbox Code Playgroud)

这段代码:

Yii::$app->user->identity->profile;
Run Code Online (Sandbox Code Playgroud)

将返回Profile与之关联的模型数据User

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

Yii::$app->user->identity->profile->location;
Run Code Online (Sandbox Code Playgroud)

详情dektrium\user\models\Profile请见.


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