2012-03-10 15 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

क्या आप रीडायरेक्ट के बाद लॉगिन पेज का उपयोग कर रहे हैं? (उदाहरण के लिए यदि आप किसी पृष्ठ तक नहीं पहुंच पा रहे हैं और यह लॉगिन स्क्रीन पर रीडायरेक्ट करता है) यदि आप हैं, तो रीडायरेक्ट मूल पृष्ठ के मान पर वापसी यूआरएल सेट करता है जो कॉन्फ़िगर/मुख्य सेटिंग को ओवरराइड करता है। – Vervious

उत्तर

8

मुझे मेरी समस्या का समाधान मिला है। मैं login.php में कोड के इस पंक्तियां जोड़ी तो उपयोगकर्ता के बाद के लिए लॉग इन यह पिछले पृष्ठ पर रीडायरेक्ट करेगा:

आप विन्यास में जोड़ें:

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

यदि मैं हार्ड कोड किए गए यूआरएल के बजाय डायनामिक लॉगिन यूआरएल जोड़ना चाहता हूं, तो मैं इस लॉगिन यूआरएल को गतिशील रूप से कैसे प्राप्त कर सकता हूं? –

+1

आपको '! = '' के बजाय '! ==' का उपयोग करना चाहिए। – trejder

0

Yii इस वापसी यूआरएल जो कॉन्फ़िग फ़ाइल में सेट है अधिलेखित कर देता है।

आप इस वापसी यूआरएल को पैराम में परिभाषित कर सकते हैं या आप createUrl फ़ंक्शन के माध्यम से इसे उत्पन्न कर सकते हैं।

1

आदेश द्वारा पिछली बार देखे मान्य url का ट्रैक रखने के इस प्रयास करें :

'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; 

    } 

} 

 संबंधित मुद्दे