2011-08-16 3 views
2

Pourquoi la redirection ne fonctionne pas ici. Je reçois un appel à la fonction non définie redirect().La redirection de Codeigniter ne fonctionne pas

class Login extends CI_Controller { 

    function index() { 

     parent::__construct(); 
     $this->load->helper('form'); 
     $this->load->helper('url'); 
     $this->load->view('login_view');   

    } 

    function authenticate() { 

     $this->load->model('user_model'); 
     $query = $this->user_model->authenticate(); 

     if($query) { 

      $data = array(
       'username' => $this->input->post('username'), 
       'is_logged_in' => true 
      ); 

      $this->session->set_userdata($data); 
      redirect('/site/news_feed'); 

     } 
     else { 

      $this->index(); 

     } 

    } 

} 

Répondre

14

Modifier la partie supérieure au-dessus de votre méthode authenticate() à cette ...

class Login extends CI_Controller { 

    function __construct() 
    { 
     // this is your constructor 
     parent::__construct(); 
     $this->load->helper('form'); 
     $this->load->helper('url'); 
    } 

    function index() 
    { 
     //this is only called when someone does not specify a method... 
     $this->load->view('login_view');   
    } 
... 

Je recommande fortement le déplacement de ces deux aides à chargement automatique en raison de leur utilisation presque manditory ...

2

Vous n'êtes pas charger l'aide URL dans la méthode authenticate. Vous devrez soit ajouter $this->load->helper('URL') au constructeur de la classe (ce que vous essayez de faire), soit l'ajouter à la méthode d'authentification elle-même. Juste un rappel, la méthode index est une méthode spéciale - elle est appelée lorsqu'aucune autre méthode n'est spécifiée. Avec l'URL <your domain>/login/, l'index sera déclenché. À part cela, il sera ignoré.

0

Votre logique est inda droit mais, il y a quelques défauts lorsque vous chargez des helpers et des modèles dans le constructeur parfois.

Essayez de charger l'assistant à partir de la fonction.

+0

exemples de ces «lacunes»? – jondavidjohn

2

Essayez:

function __construct() { 
    parent::__construct(); 
    $this->load->helper('form'); 
    $this->load->helper('url'); 
} 

Si votre serveur est Windows, essayez:

redirect('/site/news_feed','refresh'); 
0

Vous devez placer

$this->load->helper('url'); 

avant votre fonction de redirection.