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

  • 第一种方式

写一个模板类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

 

转载于:https://www.cnblogs.com/mackxu/archive/2012/07/29/CodeIgniter.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值