我已经实现了基于模块的登录 here 通过update 2方法,它对我来说很好。 现在需要以不同的角色访问此模块, 我按照here
所述实现了对该模块的用户级访问我将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'),
)
));
Problem- 1.放置LevelLookUp类的地方 2.为什么模块仍在使用CWebuser而不是EWebUser?
RETRY ------------ 当我改变
$this->setComponents(
到
Yii::app()->setComponents(
然后它登录EwebUser但不登录我登录但现在有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);
在之前的情况下,注销工作正常。 请帮帮我。
答案 0 :(得分:0)
当你在模块中调用 $ this-> setComponents()时,实际上你设置了一个新组件 您可以通过模块访问模块的用户组件,您必须编写以下内容 声明
Yii :: app() - > getModule('bgadmin') - > user-> isAdmin()或 的的Yii ::应用程序() - > getModule( 'bgadmin') - >用户>编号强>
要在您的管理模块中注销,您可以通过这种方式调用它
<强>的Yii ::应用程序() - &GT;用户&GT;注销(假); 强> 如果您使用 $ this-&gt; setComponents()方法,这将正常工作。
如果'class'=&gt; 'EWebUser',不会调用您的类,然后尝试将路径更改为
'class'=&gt; 'application.modules.bgadmin.components.EWebUser',强>
这适用于您的bgadmin模块