2017-10-20 38 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'); 
}