2017-10-20 37 views
0

我不知道如何在谷歌上短語這個問題,所以我找不到任何答案。Codeigniter重定向或加載視圖與模板

在我的視圖文件夾中,我有模板文件夾頭,導航欄,頁腳裏面。

每當我加載從我的控制器中的觀點,我將不得不這樣做,

$this->load->view('template/header'); 
$this->load->view('template/navbar'); 
$this->load->view('pages/pagename'); 
$this->load->view('template/footer'); 

我怎麼做這與重定向?我不知道爲什麼,但每當我看到成功登錄或失敗的代碼片段時,他們總是使用重定向功能而不是像上面那樣加載視圖。

例如:

function __construct() { 
    parent::__construct(); 
    if($this->ion_auth->logged_in()==FALSE) 
    { 
     redirect('pages/login'); 
    } 
} 

或我可以使用這一點,將在仍然是可以接受?

function __construct() { 
    parent::__construct(); 
    if($this->ion_auth->logged_in()==FALSE) 
    { 
     $this->load->view('template/header'); 
     $this->load->view('template/navbar'); 
     $this->load->view('pages/login'); 
     $this->load->view('template/footer'); 
    } 
} 

回答

1
function __construct() { 
    parent::__construct(); 
    if($this->ion_auth->logged_in()==FALSE) 
    { 
     redirect('controller/login'); 
    } 
} 

在你的控制器,創建一個函數調用登錄

function login() { 
    $this->load->view('template/header'); 
    $this->load->view('template/navbar'); 
    $this->load->view('pages/login'); 
    $this->load->view('template/footer'); 
} 
0

在重定向你需要使用控制器/ METHOD_NAME

redirect('controllername'); 

redirect('controllername/method'); 
+0

https://www.codeigniter.com/user_guide/general/styleguide.html#file-naming – user4419336

+0

那麼重定向也可以用來調用控制器中的方法嗎? 我認爲這只是意見。 此外,它可以調用任何控制器的任何方法?它是否也可以在同一個控制器中調用一個方法? – John

0

而不是構建你可以使用重映射。如果所述用戶登錄或重定向不

REMAP

public function _remap($method, $params = array()){ 
    if(method_exists($this, $method)){ 
     if($this->ion_auth->logged_in()==FALSE){ 
     return call_user_func_array(array($this, $method), $params); //home page 
     } 
     return call_user_func_array(array($this, 'login'), $params); //if not logged in 
    } 
    show_404(); 
} 

LOGIN

public function login() { 
    $this->load->view('template/header'); 
    $this->load->view('template/navbar'); 
    $this->load->view('pages/login'); 
    $this->load->view('template/footer'); 
}