1

ユーザーロールのログインに応じてホームページをレンダリングしたいと思います。

現在、これは protected/controllers/break;SiteController.php にありますが、別のページにリダイレクトされます。

protected function roleBasedHomePage() {
     $roles = Yii::app()->user->getState('roles'); //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'=>$roles.'homepage')));
        break;
        case 'b':
            $this->redirect(Yii::app()->createUrl('site/page',array('view'=>$roles.'homepage')));
        break;
        case 'guest':
            $this->redirect(Yii::app()->createUrl('site/page',array('view'=>'homepage')));
        break;
        //etc..
    }

 public function actionLogin()
{

    $model = new LoginForm();

    if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
        echo CActiveForm::validate($model, array('username', 'password', 'verify_code'));
        Yii::app()->end();
    }

    if (isset($_POST['LoginForm'])) {
        $model->attributes = $_POST['LoginForm'];
        if ($model->validate(array('username', 'password', 'verify_code')) && $model->login()) {
            Yii::app()->user->setFlash('success', 'Welcome ' . app()->user->name);
           // $this->redirect(Yii::app()->user->returnUrl);
           $this->roleBasedHomePage();
        }
    }

    $this->render('login', array('model' => $model));

}
}

これは、ページをリダイレクトしたいが、ホームページの URL を同じにして、「役割」に応じてコンテンツを変更したい場合に機能します。

たとえば、ユーザーが「admin」の場合、「adminhome」をレンダリングしたい

以下の機能が関係していると思いますか?

 public function actionIndex()
{
    $this->render('index');


}
4

3 に答える 3

2

これは簡単にできます。最初にすべてのロールのビューを作成します。次に、ログイン後にすべてをホームページにリダイレクトしますが、役割を確認し、それに応じて、その役割のビューを「renderPartial()」します。お気に入り:

switch($role){
   case 'admin' :
      $this->renderPartial('application.views.site._admin');    // view for admin
      break;
   case 'superUser':
      $this->renderPartial('application.views.site._superUser');// view for super user
      break;
于 2013-10-28T17:58:45.120 に答える