使用codeigniter动态页面加载

时间:2014-02-26 05:56:10

标签: codeigniter codeigniter-2 codeigniter-url codeigniter-routing codeigniter-form-helper

嘿,我是codeigniter的新手。我想动态地将我的页面加载到我的视图中。这意味着,使用一个功能。 例如,我有4页回家,关于,联系,信息。在我的视图文件夹中,我创建了一个基本布局,其中包含页眉和页脚,这对于所有这些页面都是相同的。现在我想要当我点击那些页面链接它只是加载到内容体而不加载整页。使用CI正常程序我可以做到。

function home(){
   $data['main_content'] = 'home';
   $this->load->view('template/layout', $data);
}


function about(){
   $data['main_content'] = 'about';
   $this->load->view('template/layout', $data);
}

但我想创建一个将这些页面调用为单个函数的函数,例如

function pageload($page){

}

此函数检查请求的文件是退出还是不存在。如果存在,则加载页面,否则加载“找不到页面”404错误页面。我该怎么做... plz help。

我的观点文件是:

                        <nav>
                    <ul class="sf-menu">
                        <li class="current"><?php echo anchor('home/index', 'Home');?></li>
                        <li><?php echo anchor('home/amenities', 'Room & Amenitis');?></li>
                        <li><?php echo anchor('home/reservations', 'Reservations');?></li>
                        <li><?php echo anchor('home/photos', 'Photographs');?></li>
                        <li><?php echo anchor('home/pakages', 'Pakages');?></li>
                        <li><?php echo anchor('home/explore', 'Explore');?></li>
                        <li><?php echo anchor('home/contact', 'Contact');?></li>
                    </ul>       
                </nav>

和控制器:

    <?php

if(!defined('BASEPATH'))exit('不允许直接访问脚本');

class Home extends CI_Controller{

    function __construct(){
        parent::__construct();
    }

    function pageload($page){
        $data['main_content'] = $page;
        $this->load->view('template/layout', $data);            
    }
}

&GT;

2 个答案:

答案 0 :(得分:0)

你可以做点什么吗

function pageload($page){
   $data['main_content'] = $page;
   $this->load->view('template/layout', $data);
}

如果你不想在url中显示controller_name / pageload,那么在application / config / routes.php中 添加一个数组

$route['(home|about_us|other_page|another_page)'] = 'controller_name/pageload/$1';

并加载您的404页面,只需转到application / config / routes.php即可 找到这一行$route['404_override']并将其值设置为你想要的东西

$route['404_override'] = 'page_not_found';

然后在你的控制器中添加一个名为page_not_found.php的控制器,并从该控制器加载你想要的404自定义视图。

答案 1 :(得分:0)

尝试此功能我认为这会对你有所帮助

function build_view($flake) {
    $this->data['content'] = $this->load->view($flake, $this->data, TRUE);
    $this->load->view('header', $this->data);
}   

添加后,您需要添加其他功能,如索引功能

function index(){
     $this->$data['main_content'] = $page;
     $this->build_view('template/layout.php')
}