2011-12-07 30 views
7

私はYiiフレームワークの初心者です。 Yiiでは、デフォルトでログインすると、インデックスページにリダイレクトされます。私はYiiにログインすると、そのページはインデックスページではなく、別のページにリダイレクトされます。それで誰も私を助けてくれるでしょう。どんな助けや提案も非常に高い評価を受けます。Yiiフレームワークのログイン後にページをリダイレクト

[編集]私は、ログインページはプロフィールページの方にリダイレクトされた後のようにユーザモジュールを使用する際にリダイレクトが動作する方法を

+1

あなたがチェックすることをお勧めします[リンク](http://www.yiiframework.com/doc/api/1.1/CWebUser#returnUrl-detail) – lastland

答えて

13

コントローラのactionLoginメソッド内でリダイレクトするURLを指定できます(リダイレクトを行う場合は、実際にはそうする必要があります)。ログインに成功したら、このようなコードが表示されます:

$this->redirect(Yii::app()->user->returnUrl); 

CController::redirect方法をサポートしている任意のパラメータに変更し、これを、ユーザーがログイン後にリダイレクトされた場合、あなたがコントロールすることができます。

脇に、Yii::app()->user->returnUrlを使用すると、リダイレクトページでは、ログインページにリダイレクトされる前にリダイレクトページを訪問先のURLに戻すことができます。

6

ログイン後にユーザーをページにリダイレクトするには、ユーザーがログインした後にページが表示されるようにgiiで新しいコントローラを作成します。ここでは、このコントローラを「アプリケーション」と呼んでいます。 Giiはあなたのためにいくつかのファイルを自動的に作成します - あなたは/protected/models/AppController.phpになります

AppController.phpには、actionIndexというデフォルトのパブリック関数(メソッド)があります。このデフォルトメソッドの目的は、/protected/views/app/index.phpファイル(giiによって作成されたもの)を呼び出す(レンダリングする)ことです。 index.phpは、ログインしたユーザーに表示されるファイルです。これは、アプリケーションをビルドするために変更するファイルです。 SiteController.phpに戻って、actionLogin()メソッドのredirect()の引数を変更してください。

if(isset($_POST['LoginForm'])) 
      { 
        $model->attributes=$_POST['LoginForm']; 
        // validate user input and redirect to the previous page if valid 
        if($model->validate() && $model->login()) 
        // since my controller is /protected/controllers/AppController.php 
          $this->redirect(array('app/index')); 
      } 

これはあなたを始めましょう。 (これは本質的には the yiiframework siteでディスカッションに投稿したものです)

2

ユーザモジュールを使用してログインした後、サイト/インデックスにリダイレクトできます。

'modules'=>array(
    // user extension 
    'user'=>array(
       ........... 
     # page after login 
     //'returnUrl' => array('/user/profile'), 
     'returnUrl' => array('/site/index'), 
       ........ 
    ), 
), 
0
$this->redirect($this->createUrl('yourcontroller/youraction'));