您的位置:首页 > 其它

CodeIgniter 视图使用两种模板Template布局的方式

2012-07-29 14:54 495 查看
第一种方式

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

<?php if (!defined('BASEPATH'))
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);
}

}
?>


转载自http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=10753&page=1#pid50451

第二种方式

通过获得模板变化部分的全部数据返回给模板。

一般在网站的开发过程中,都会有个 template 或是叫 layout 的,它包含了整个网站的外观和布局,一般分为header,content,footer 有的甚至还包括 menu。其中的 content 部分则会随着不同的页面和功能而变化。这样就可以保证网站风格的一致性,也可以减少不少工作量。虽然便捷的 Codeigniter没有提供内置的处理方式,但是我们还是自己扩展的。
首先,把下面的代码保存到 application/libraries/Layout.php

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');

class Layout
{

var $obj;
var $layout;

function Layout($layout = "layout_main")
{
$this->obj =& get_instance();
$this->layout = $layout;
}

function setLayout($layout)
{
$this->layout = $layout;
}

function view($view, $data=null, $return=false)
{
$data['content_for_layout'] = $this->obj->load->view($view,$data,true);

if($return)
{
$output = $this->obj->load->view($this->layout,$data, true);
return $output;
}
else
{
$this->obj->load->view($this->layout,$data, false);
}
}
}
?>


转载自http://codeigniter.org.cn/forums/thread-1176-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: