.php 加footer,CI学习 – header和footer

方法一、在每个view文件的开头和结尾分别加上下面两句:

[php]

<?php $this->load->view(‘header’)?>

<?php $this->load->view(‘footer’)?>

[/php]

这也是最简单和容易理解的方法。

方法二、写一个模板类template.php,在里面实现这种逻辑,再提供一个showView()方法。头尾有各自的模型。

以下供参加:

[php]

exit(‘No direct script access allowed’);

class Template

{

private $mCI;

private $mHeaderView=’header.php’;//头部文件

private $mFooterView=’footer.php’;//尾部文件

private $mTemplateView=’template.php’;//模板框架

public function __construct()

{

$this->mCI = &get_instance();

}

public function showView($rContent_data)

{

//$rContent_data 在控制器中实现内容逻辑与视图

$data=array(

$header_data=$this->getHeader(),

$footer_data=$this->getFooter(),

$content_data=$rContent_data

);

$this->mCI->load->view($this->mTemplateView,$data);

}

private function getHeader()

{

$h=new HeaderModel();//实现头部逻辑,

$data=$h->getData();

return $this->mCI->load->view($this->mHeaderView,$data,true);

}

private function getFooter()

{

$f=new FooterModel();//实现尾部逻辑,

$data=$f->getData();

return $this->mCI->load->view($this->mFooterView,$data,true);

}

}

?>

[/php]

这种方式比较适用于头尾变化比较多的情况.

方式三:考虑到ajax请求的情况,使用hook,步骤如下:

1.在config.php开启hook

[php]

$config['enable_hooks'] = TRUE;

[/php]

2.hooks.php添加代码

[php]

$hook['display_override'] = array(

‘class’ => ‘MyDecorate’,

‘function’ => ‘init’,

‘filename’ => ‘MyDecorate.php’,

‘filepath’ => ‘hooks’

//’params’ => array(‘beer’)

);

[/php]

3、hooks目录新增文件MyDecorate.php

[php]

/**

* @author Zelipe

*

* 2012-05-26

*/

class MyDecorate {

private $CI;

public function __construct() {

$this->CI =& get_instance();

}

public function init() {

$html = ”;

// header html, ‘isAjax’ from helper

if(!isAjax())

$html .= $this->CI->load->view(‘header’, null, true);

// body html

$html .= $this->CI->output->get_output();

// footer html

if(!isAjax())

$html .= $this->CI->load->view(‘footer’, null, true);

$html = str_replace(‘ ‘, ”, $html); // 过滤代码缩进

$this->CI->output->_display($html);

}

}

[/php]

其中 isAjax() 为 helpers,可直接将此方法定义在MyDecorate.php内(可不作判断,如希望控制ajax不引入公用文件则保留)

[php]

// 是否为 ajax 请求

function isAjax() {

return (isset($_SERVER['HTTP_X_REQUESTED_WITH'])

&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === ‘xmlhttprequest’);

}

[/php]

4、views 目录新增header.php, footer.php。

四、采用layout的方式,即在一个主view里嵌入头尾;

在core目录下创建一个自定义的controller,代码如下:

[php]

class Frontend_Controller extends CI_Controller{

public function __construct(){

parent::__construct();

}

/**

* 加载视图

*

* @access protected

* @param string

* @param array

* @return void

*/

protected function _template($template, $data = array())

{

$data['tpl'] = $template;

$this->load->view(‘layout’, $data);

}

}

[/php]

创建一个主View, 命名为layout.php,

[php]

<?php $this->load->view(isset($tpl) && $tpl ? $tpl : ‘default’); ?>

[/php]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值