【问题标题】:dynamically page load using codeigniter使用 codeigniter 动态加载页面
【发布时间】:2014-03-28 18:51:48
【问题描述】:

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

?>

【问题讨论】:

  • Codeigniter 已经做了你想做的一切。如果您没有控制器(或该控制器中的适当功能),它将生成 404 错误页面。而且您根本不需要编写任何代码。
  • 我知道 Dwayne,但我的问题是如何使用单个函数加载我的所有页面。
  • 那我不明白你的问题。也许你可以扩展它或提供一些更大的背景。

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


【解决方案1】:

你可以这样做

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 自定义视图。

【讨论】:

  • 如何从我的页面链接中获取 $page 变量的值?
  • 只需在您的网址中输入http://site_name/controller_name/homehttp://site_name/controller_name/about_us
  • 对不起我的错误使用这个网址代替访问http://site_name/homehttp://site_name/about_us
  • 当我点击我的页面链接假设时,它现在不起作用,
  • 我只得到家庭控制器而不是该控制器的页面。
  • 您的视图文件应与您在 url 和 routes.php 文件中提到的名称相同...例如,如果您将数组创建为 $route[(home|about_us)] = 'controller_name/pageload/$1';,则主页应该是主页.php 和关于我们的页面是 about_us.php
  • 【解决方案2】:

    试试这个功能,我想这会对你有所帮助

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

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签