在yii中建立一個站點,其中有3種類型的用戶。 在UserIdentity :: authenticate()中,我設置了像這樣的用戶類型。 $this->setState('role', $user->role->id);
根據這種類型,我想重定向到屬於這種類型的用戶的模塊。更具體;如果Yii :: app() - > user-> role == 3我想重定向到名爲「tradesman」的模塊的默認頁面。 這是我在SiteController得到:: actionLogin():登錄後重定向到模塊Yii
/**
* 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,它確實有效。但我如何重定向?
顯示你的UrlManager規則配置 – CreatoR
你真的想要嗎? – veelen
如果你幫助我的答案 - 沒有:) – CreatoR