0

我不是CI程序員,只是想學習它。也許這是錯誤的方法,請指教。CodeIgniter路由問題,建議如何去做

我控制器(不子目錄):

class Users extends CI_Controller { 

    function __construct() { 
     parent::__construct(); 
    } 

public function index($msg = NULL) { 

     $this->load->helper(array('form')); 

     $data['msg'] = $msg; 

     $this->load->view('user/login' , $data); 

    } 

    public function process_logout() { 
     $this->session->sess_destroy(); 
     redirect(base_url()); 
    } 

} 

而對於登錄的路線:

$route['user/login'] = 'users/index'; 

問題是,當我想退出,它讓我看到404,因爲我沒有它在我的路線:

$route['user/process_logout'] = 'users/process_logout'; 

在我看來,我把<a href="users/process_logout">logout</a>

當我補充說,它的作品,這是stuppid添加一切的路線。我做錯了什麼,請指教。

謝謝

回答

2

不知道你爲什麼試圖在index()函數中實現登錄功能。然而,既然你說你正在學習CI,我正在講述一些關於_remap()函數。

在此之前。你可以試試下面的路由:

$route['user/:any'] = 'users/$1'; 
$route['user/login'] = 'users/index'; 

如果你想利用值控制器段後,您需要使用_remap()函數,而這個函數可以解決你的路由的問題,我的意思是,你並不需要設置路由。讓我們使用_remap()函數實現您的代碼控制器'users'

class Users extends CI_Controller { 

    private $sections = array('login', 'logout'); 

    function __construct() { 
     parent::__construct(); 

    } 

    public function _remap($method) 
    { 
     $section = $this->uri->segment(2); 

     if(in_array($section, $this->sections)) 
      call_user_func_array(array($this, '_'.$section), array()); 

     else show_404(); // Showing 404 error 
    } 

    private function _login() 
    { 
     $msg = $this->uri->segment(3); 

     $this->load->helper(array('form')); 
     $data['msg'] = $msg; 
     $this->load->view('user/login' , $data); 
    } 

    public function _logout() { 
     $this->session->sess_destroy(); 
     redirect(base_url()); 
    } 

} 
+0

謝謝你,這很有用:) – user147 2013-03-21 04:03:10

+0

也謝謝你。 :)學習並享受CI。 – 2013-03-22 05:00:14