• 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

  • 相关阅读:
    BZOJ 1096: [ZJOI2007]仓库建设
    【BZOJ1008】越狱(排列组合计数,容斥原理)
    【BZOJ1403】Divisibility Testing(数论)
    【BZOJ1225】求正整数(数论)
    高精度模板(From JCVB)
    【NOIP模拟&POJ2152】灰色的果实(树形DP)
    【BZOJ2560】串珠子(状压DP,容斥原理)
    【POJ1185】炮兵阵地(状压DP)
    【POJ3254】Corn Fields(状压DP)
    【POJ3311】Hie with the Pie(状压DP,最短路)
  • 原文地址:https://www.cnblogs.com/mackxu/p/CodeIgniter.html
Copyright © 2020-2023  润新知