在 yii 中建立一个站点,其中有 3 类用户。在 UserIdentity::authenticate() 中,我设置了这样的用户类型。$this->setState('role', $user->role->id);
根据这种类型,我想重定向到属于这种类型用户的模块。更加具体; 如果 Yii::app()->user->role == 3 我想重定向到名为“tradesman”的模块的默认页面。这是我在 SiteController::actionLogin() 中得到的:
/**
* Displays the login page
*/
public function actionLogin()
{
$model=new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login()){
switch(Yii::app()->user->role){
case 3:
$this->redirect(Yii::app()->controller->module->tradesman);
break;
default:
$this->redirect(Yii::app()->user->returnUrl);
}
}
}
// display the login form
$this->render('login',array('model'=>$model));
}
重定向到模块的方式不起作用。我收到了 Php 通知“试图获取非对象的属性”。然后,我在 TradesmanModule 中创建了一个方法 'defaultUrl,它返回Yii::app()->createUrl($this->getId() . '/default/index');
. 我试图重定向到Yii::app()->controller->module->defaultUrl
,但结果是一样的。
我也尝试过$this->redirect('tradesman/default/index');
,$this->redirect('application.modules.tradesman');
但随后出现 404 错误,提示“系统无法找到请求的操作“商人”。”。
如果我以角色 3 的用户身份登录,并导航到模块的默认 url,它确实可以工作。但是我该如何重定向?