从控制器到视图的URI路由 - codeigniter

时间:2017-03-08 07:39:57

标签: php codeigniter routing

我是codeigniter的新手,

我想将登录页面请求重定向到此路由

$ route [' login'] =' TravelApi / login /';

所以现在http://localhost.com/codeigniter/login请求应该通过controller / TravelApi.php的TravelApi类的login()函数进行路由。

控制器

public function login(){

        $contents['login_url'] = $this->googleplus->loginURL();
        $this->load->view('frontend/login',$contents);
}

我的问题是:

当请求通过上面的控制器路由然后转到frontend / login.php时 - login.php文件被加载但没有页眉和页脚。

但是当我从config / routes.php

中删除此路由时
$route['login'] = 'TravelApi/login/';

然后请求不通过控制器路由并直接转到frontend / login.php。在这里它加载带有页眉和页脚的login.php文件。

但我需要从控制器路由。并使用页眉页脚加载视图文件。

那么为什么在路由器通过我的控制器功能时它不会加载页眉?

编辑:

我在默认控制器welcome.php中找到了一个函数

public function pages($alias=NULL)
{   
    $page='frontend/'.$alias;
    $this->load->view('frontend/common/head'); // For Head Scripts
    $this->load->view('frontend/common/header', $this->common_menu('TopMenu')); // For Header Content
    $this->load->view('frontend/common/menus', $this->common_menu('MainMenu')); // For Menus
    $this->load->view($page);  
    $this->load->view('frontend/common/footer'); // For Footer Content
    $this->load->view('frontend/common/foot'); // For Footer Scripts

}

但是仍然不清楚为什么在通过我的控制器的功能路由时它不会加载页眉?

1 个答案:

答案 0 :(得分:0)

您可以在编辑中回答自己的问题。页眉和页脚位于单独的视图文件中,您也需要加载它们。所以这样的事情应该有效:

public function login(){

    $contents['login_url'] = $this->googleplus->loginURL();
    $this->load->view('frontend/common/head'); // For Head Scripts
    $this->load->view('frontend/common/header', $this->common_menu('TopMenu')); // For Header Content
    $this->load->view('frontend/common/menus', $this->common_menu('MainMenu')); 

    $this->load->view('frontend/login',$contents);

// For Menus
    $page='frontend/'.$alias;
    $this->load->view($page);  
    $this->load->view('frontend/common/footer'); // For Footer Content
    $this->load->view('frontend/common/foot'); // For Footer Scripts
}

注意:行$this->load->view($page);看起来可能是其他页面的主要内容,此处主要内容应为$this->load->view('frontend/login',$contents);,如果是这样的话,请删除$ page view load。