Model yii2:覆盖用户模型

Model yii2:覆盖用户模型,model,yii2,Model,Yii2,如何在yii2中正确覆盖用户模型 例如,我想覆盖common\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 '{{%accou

如何在yii2中正确覆盖用户模型

例如,我想覆盖common\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

您可以设置两件事: (一)

和2

你把它们换过来了。”identityClass是您的模型,“class”是Yii的用户组件。通过设置identityClass,您告诉Yii用户组件应该使用frontend\models\User它的identityClass属性

这是用户组件

以前版本的Yii2实际上已经放入了文件frontend\components\User.php(扩展了yii\web\User)。我明白为什么现在更令人困惑了

您得到的新错误是什么

'user' => [
   'identityClass' => 'frontend\components\User',
   ],   

在config+delete browser Cookie中(似乎是yii2错误-存在Cookie,函数RenewalAuthStatus()将common/models/User加载为identityClass并产生另一个错误)

我的模型扩展common/models/User.php,如上面的代码所示抱歉,我没有看到这一点。BaseUser实际上也是一个Yii类,无论如何,这并不重要,请参见编辑后的答案。新错误与db相关-关系“User”不存在(因为使用的默认用户模型和我的新模型具有不同的表名)。当我清除浏览器中的cookies时,错误消失了。感谢您的帮助它应该是'user'=>['identityClass'=>'frontend\models\user',],有关设置identityClass和类之间的差异,请参阅我的答案。
'user' => [
    'class' => 'frontend\components\User',
],
'user' => [
   'identityClass' => 'frontend\components\User',
   ],