zoukankan      html  css  js  c++  java
  • CI学习 header和footer

    见网上提到有很多种方法,没有具体测试哪个效率高。
    方法一、在每个view文件的开头和结尾分别加上下面两句:

    <?php $this->load->view('header')?>
    ...
    <?php $this->load->view('footer')?>


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

    方法二、写一个模板类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);
    }
    }
    
    ?>


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

    方式三:考虑到ajax请求的情况,使用hook,步骤如下:
    1.在config.php开启hook

    $config['enable_hooks'] = TRUE;


    2.hooks.php添加代码

    $hook['display_override'] = array(
    'class' => 'MyDecorate',
    'function' => 'init',
    'filename' => 'MyDecorate.php',
    'filepath' => 'hooks'
    //'params' => array('beer')
    );


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

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    /**
    * @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);
    }
    }

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

    // 是否为 ajax 请求 
    function isAjax() {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
    }

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

    摘自:http://blog.nengzuo.com/?p=1182

  • 相关阅读:
    纯前端导出Excel表格
    vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画
    解决图片循环展示间距
    微信小程序aes前后端加密解密交互
    判断字符串中是否包含表情
    银行卡号Luhn校验算法
    身份证校验(支持15位和18位身份证号)、邮箱校验正则
    数组去重
    bootstrap 中 css 与 javascript 的使用
    js 分页
  • 原文地址:https://www.cnblogs.com/jenqz/p/2816593.html
Copyright © 2011-2022 走看看