Model yii2:覆盖用户模型
如何在yii2中正确覆盖用户模型 例如,我想覆盖common\models\User.php 我使用以下代码创建了frontend\models\User.php: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
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',
],