如何在yii2中正确覆盖用户模型?
例如,我想覆盖常见的\ models \ User.php
我使用以下代码创建了frontend \ models \ User.php:
namespace frontend\models;
use common\models\User as BaseUser;
class User extends BaseUser
{
public static function tableName()
{
return '{{%accounts}}';
}
...
在main.php中,当我添加
'user'=>array(
'class' => 'frontend\models\User',
),
我收到错误 设置未知属性:frontend \ models \ User :: identityClass
答案 0 :(得分:6)
您可以设置两件事: 1)
'user' => [
'identityClass' => 'common\models\User',
],
和2
'user' => [
'class' => 'frontend\components\User',
],
你正在切换它们。 ' identityClass'是你的模特,' class'是Yii的用户组件。通过设置identityClass,您告诉Yii用户组件应该使用frontend \ models \ User它的identityClass属性。
这是用户组件https://github.com/yiisoft/yii2-framework/blob/master/web/User.php
以前版本的Yii2实际上已经放入了文件frontend \ components \ User.php(扩展了yii \ web \ User)。我明白为什么现在更加混乱。
您遇到的新错误是什么?
答案 1 :(得分:1)
'user' => [
'identityClass' => 'frontend\components\User',
],
在config +删除浏览器cookie(似乎是yii2 bug-存在cookie,函数renewAuthStatus()加载common / models / user作为identityClass并产生另一个错误)