View Yii2:从视图调用类用户中的自定义方法

View Yii2:从视图调用类用户中的自定义方法,view,model,yii2,yii2-user,View,Model,Yii2,Yii2 User,我想用一个名为getFirstname的函数扩展我自己的用户模型。 函数应返回数据库中的自定义字段 但是当我扩展用户模型时。它说“调用未知方法:yii\web\User::getFirstname() 应用程序\模型\用户中的我的用户模型。 我已删除文件中与此问题无关的方法 这里我做错了什么?带有getFirstname方法的User类位于\app\models命名空间中,但是在您的视图中被调用的类位于yii\web命名空间中。您应该将代码更改为使用\app\models\User尝试以下操

我想用一个名为getFirstname的函数扩展我自己的用户模型。 函数应返回数据库中的自定义字段

但是当我扩展用户模型时。它说“调用未知方法:yii\web\User::getFirstname()

应用程序\模型\用户中的我的用户模型。 我已删除文件中与此问题无关的方法



这里我做错了什么?

带有
getFirstname
方法的
User
类位于
\app\models
命名空间中,但是在您的视图中被调用的类位于
yii\web
命名空间中。您应该将代码更改为使用
\app\models\User

尝试以下操作:

<?= Yii::$app->user->identity->getFirstname() ?>

<!-- or -->

<?= Yii::$app->user->identity->firstname ?>

使用
Yii::$app->user
您只需获得用户组件。课堂评论告诉你:

User是“User”应用程序组件的类,用于管理 用户身份验证状态


因此,它不是您通过
Yii::$app->user
获得的实际用户,而是管理组件。使用此类的
identity
getIdentity()
可以获得实现IdentityInterface的用户对象。当你看一看:你的用户类实现了这个接口。在您的配置中,您告诉用户组件它应该完全使用您的用户类。

有效!谢谢你的详细描述!
<?= Yii::$app->user->identity->getFirstname() ?>

<!-- or -->

<?= Yii::$app->user->identity->firstname ?>