1

我已经通过 update 2 方法从 这里实现了基于模块的登录 ,它对我来说很好。现在需要以不同的角色访问这个模块,我实现了对这个模块的用户级访问,如此处所述

我将 LevelLookUp 类添加到 EWebUser。当我现在尝试登录时出现 CException

“CWebUser 及其行为没有名为“isAdmin”的方法或闭包。”

显示。这意味着模块仍在使用 CWebUser,但我创建了自己的 EWebUser 并将其放置到 module/components/EWebUser.php 和模块配置文件 init 方法中的代码

$this->setImport(array(
    'bgadmin.models.*',
    'bgadmin.components.*',
));

$this->setComponents(
    array(
        'errorHandler' => array(
            'errorAction' => 'bgadmin/default/error'),
        'user' => array(
            //'class' => 'CWebUser',
            'class' => 'EWebUser',
            'loginUrl' => Yii::app()->createUrl('bgadmin/default/index'),
        )
));

问题 - 1.在哪里放置 LevelLookUp 类 2.为什么模块仍在使用 CWebuser 而不是 EWebUser ?

重试------------ 当我改变

$this->setComponents(

Yii::app()->setComponents(

然后它访问 EwebUser 但不是我登录时的 loginurl 但现在有 2 个问题 1.'expression'=>'Yii::app()->user->isAdmin()'不起作用但在 EwebUser 类中它返回flase。2.注销时出现错误“未定义属性“BgadminModule.user”。”注销代码是

Yii::app()->user->logout(false);
        $this->redirect(Yii::app()->getModule('bgadmin')->user->loginUrl);

在以前的情况下注销工作正常。请帮我 。

4

1 回答 1

0

当您在模块中调用$this->setComponents()时,实际上您为模块设置了一个新组件,因此要访问模块的用户组件,您必须编写以下语句

Yii::app()->getModule('bgadmin')->user->isAdmin()Yii::app()->getModule('bgadmin')->user->id

对于您的管理模块中的注销,您已经以这种方式调用它

Yii::app()->user->logout(false); 如果您使用$this->setComponents()方法,这将正常工作。

如果'class' => 'EWebUser',不调用你的类,然后尝试将路径更改为

'class' => 'application.modules.bgadmin.components.EWebUser',

这应该适用于您的 bgadmin 模块

于 2013-09-17T09:11:07.940 回答