View Yii2:从视图调用类用户中的自定义方法
我想用一个名为getFirstname的函数扩展我自己的用户模型。 函数应返回数据库中的自定义字段 但是当我扩展用户模型时。它说“调用未知方法:yii\web\User::getFirstname() 应用程序\模型\用户中的我的用户模型。 我已删除文件中与此问题无关的方法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
方法的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 ?>