我是非常新的。
如何根据用户角色在我的网站中设置默认主页?在yii中使用了什么方法。
我所做的是,在我的索引操作中我渲染索引文件。但是我怎样才能让它成为角色呢?
public function actionIndex() {
$this->render('index');
}
任何帮助?
答案 0 :(得分:2)
您可以根据用户类型更改默认控制器和操作中的视图文件,例如:
if($usertype == 'user_type1') { $this->render('usertypeview1'); }
if($usertype == 'user_type2') { $this->render('usertypeview2'); }
这里是usertypeview1& usertypeview2是视图文件夹下视图文件的名称。
您也可以根据用户类型更改布局,例如:
if($usertype == 'user_type1') { $this->layout = 'column1'; }
if($usertype == 'user_type2') { $this->layout = 'column2'; }
此处column1和column2是views文件夹
中布局文件夹下的布局文件我希望这会对你有所帮助。
答案 1 :(得分:2)
你现在可能已经想到这一点,但没有发布你的答案。为了防止任何人,一个实现如下。我不知道RBAC中是否有内置功能可以实现这一点,但是很容易实现。
在文件protected / controllers / SiteController.php中更改1行:
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())
//$this->redirect(Yii::app()->user->returnUrl); change this
$this->roleBasedHomePage(); //to this
}
// display the login form
$this->render('login',array('model'=>$model));
}
并将此方法添加到同一文件
protected function roleBasedHomePage() {
$role='theusersrole' //however you define your role, have the value output to this variable
switch($role) {
case 'admin':
$this->redirect(Yii::app()->createUrl('site/page',array('view'=>$role.'homepage'));
break;
case 'member':
$this->redirect(Yii::app()->createUrl('site/page',array('view'=>$role.'homepage'));
break;
//etc..
}
}
根据您在主页上需要的页面类型,您重定向的内容可能会有很大差异。在这种情况下,我使用静态页面。如果您的页面一致地命名,您可以省略switch语句并将该角色连接到createURL中的视图名称。