2012-03-10 2 views
6

안녕 얘들 아 내가 main.php 설정 파일에서이 코드가?YII returnUrl 기능

UserController.php :

public function actionLogin() 
{ 
    if (!Yii::app()->user->isGuest){ 
     $this->redirect('/user/index'); 
     return; 
    } 

    $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); 
    } 
    // display the login form 
    $this->render('login',array('model'=>$model)); 
} 
+0

로그인 기능을 수행하는 방법 어떻게 생겼어? – Pentium10

+0

업데이트했습니다. – Irakli

+0

리디렉션 후 로그인 페이지를 사용하고 있습니까? (예 : 페이지에 액세스 할 수없고 로그인 화면으로 리디렉션되는 경우) 리디렉션은 returnUrl을 config/main 설정보다 우선하는 원래 페이지의 값으로 설정합니다. – Vervious

답변

8

내 문제에 대한 해결책을 찾았습니다.

는 구성에 추가 : 마지막 방문 유효한 URL을 추적하기 위해

if (Yii::app()->request->urlReferrer != 'http://www.example.com/user/login' && 
    Yii::app()->request->urlReferrer != 'http://www.example.com/user/register') 
{ 
    Yii::app()->user->setReturnUrl(Yii::app()->request->urlReferrer); 
} 
+0

좋은 해킹 ..! :-) –

+0

하드 코딩 된 URL 대신 동적 로그인 URL을 추가하려면이 로그인 URL을 어떻게 동적으로 얻을 수 있습니까? –

+1

'! =='대신'! =='를 사용해야합니다. – trejder

0

YII는 설정 파일에 설정이 반환 URL을 덮어 씁니다.

params에이 반환 URL을 정의하거나 createUrl 함수를 통해이를 생성 할 수 있습니다.

1

이 시도 : 그것은 이전 페이지에서 리디렉션 로그인 사용자 후, 그래서 나는 login.php 코드의 라인을 추가 :

'preload' => array(
    // preloading 'loginReturnUrlTracker' component to track the current return url that users should be redirected to after login 
    'loginReturnUrlTracker' 
), 
'components' => array(
    'loginReturnUrlTracker' => array(
     'class' => 'application.components.LoginReturnUrlTracker', 
    ), 
    ... 
), 

구성 요소에서이 파일을 넣어/LoginReturnUrlTracker.php :

<?php 

class LoginReturnUrlTracker extends CApplicationComponent 
{ 

    public function init() 
    { 
     parent::init(); 

     $action = Yii::app()->getUrlManager()->parseUrl(Yii::app()->getRequest()); 

     // Certain actions should not be returned to after login 
     if ($action == "site/error") { 
      return true; 
     } 
     if ($action == "site/logout") { 
      return true; 
     } 
     if ($action == "site/login") { 
      return true; 
     } 

     // Keep track of the most recently visited valid url 
     Yii::app()->user->returnUrl = Yii::app()->request->url; 

    } 

}