我正在使用codeigniter框架开发一个Web应用程序。我的应用程序有一个固定的页眉和页脚。我希望我的应用程序的中间部分(即正文)加载当用户进入他可用的各种页面并使页眉和页脚不变。
(hackerrank.com ......我在谈论一个与此类似的网站... 登录后进入这个网站......标题和侧边栏保持不变并加载剩下的页面......我们如何使用CI框架实现它?
有什么方法可以实现这个目标吗?
我正在执行以下操作,这使我加载完整的网站(就像重新加载整个页面一样:/)
正如您可以看到我的template.php
中存在以下代码<?php
$this->load->view("templates/header.php");
$this->load->view($main_body);
$this->load->view("templates/footer.php");
?>
和I Controller我通常会编写以下代码
public function load_page(){
$data['main_body'] = 'dashboard_pages/dashboard_view';
$this->load->view('template.php',$data);
}
答案 0 :(得分:1)
您非常接近解决方案:按原样加载页眉和页脚,变量:
<?php
$this->load->view($header);
$this->load->view($main_body);
$this->load->view($footer);
?>
棘手的是,你总是在你编写的每个控制器中编写方法函数load_page(),并且最好有一个MY_controller,一个在你的控制器类之前的类,你可以在这个类中使用它。 ll写下你引用的页脚:
检查在这里写一个MY_Controller:http://ellislab.com/codeigniter/user-guide/general/core_classes.html
然后,写下你的MY_Controller:
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
}
public function load_page( $page )
{
$data['main_body'] = $page;
// Logic for your header or footer deppending on logging or whatever...
if ( 1 ==1 ) {
$data['header'] = "templates/header.php";
$data['footer'] = "templates/footer.php";
}
$this->load->view('template.php',$data);
}
}
并且您必须确保您的控制器扩展了MY_Controller类,并添加了一个load_page方法,您将向其传递参数:
class Custom_page extends MY_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load_page( 'dashboard_pages/dashboard_view' );
}
}
我认为你会得到你想要的东西,这样你只需要在一个地方写下页眉和页脚的逻辑:在MY_Controller中,只需在任何部分使用它。