0

helow,我是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错误页面。我怎样才能做到...请帮助。

我的视图文件是:

                        <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);            
    }
}

?>

4

2 回答 2

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')
}
于 2014-02-27T02:39:40.280 回答
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']并将其值设置为您想要的 snything

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

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

于 2014-02-26T07:53:55.547 回答