在视图codeigniter框架中加载单个页面模块

时间:2014-04-20 14:53:53

标签: php jquery ajax codeigniter

我正在使用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);
     }

1 个答案:

答案 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中,只需在任何部分使用它。