yii 2:覆盖用户模型

时间:2014-12-01 14:20:52

标签: model yii2

如何在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

2 个答案:

答案 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并产生另一个错误)