6

私はその成功した機能制御で機能ログインを持っていますdashboard/index. アクセスルールが定義されているため、ユーザーがleads/indexページに戻ってログインするとします。ログインが成功した後、最後に入力された URL に移動しますleads/index

4

7 に答える 7

4
... Controller extends CController (){
...
public function init() {

   if($this->isValidForRedirectRequest(Yii::app()->request)){
       Yii::app()->user->returnUrl = Yii::app()->request->requestUri;
   }
}
...

public function isValidForRedirectRequest(){
   /*something validations of request, like isAjax or other */
}
}...




... LoginController()...{

if($authIdentity->authenticate()) $this->redirect(Yii::app()->user->returnUrl);
...

}
于 2013-04-22T12:18:12.907 に答える
1

この質問に対する最も簡単な答えは、次のコードだと思います。

$this->redirect(Yii::app()->request->urlReferrer);

このコードを使用してください。

于 2015-09-23T09:14:43.593 に答える
1

Yii2 用。

メソッドのコントローラーでは、actionLogin()これを使用します。

if (Yii::$app->user->getReturnUrl() == '/') {
  return $this->redirect('dashboard/index');
} else {
  return $this->redirect(Yii::$app->user->getReturnUrl());
}

ログインがホームページ ( getReturnUrl() == '/') からのものかどうかを確認し、ログイン後にページにリダイレクトしdashboard/indexます。それ以外の場合は、要求されたページにリダイレクトされます。

于 2016-08-15T12:47:56.460 に答える
1

で使用$this->redirect(Yii::app()->user->returnUrl)しますSiteController

public function actionLogin() {
    $this->setTheme();
    $this->layout = '//layouts/login';
    $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));
}
于 2018-07-12T04:51:50.013 に答える
0

セッションごとにその動作を制御することをお勧めします (たとえば、ページネーションなど)。

return $this->goBack();

動作します。

于 2016-08-15T12:54:23.367 に答える