在 CI 中加载页眉和页脚视图

Posted

技术标签:

【中文标题】在 CI 中加载页眉和页脚视图【英文标题】:Load header and footer view in CI 【发布时间】:2012-01-25 22:16:23 【问题描述】:

有没有办法在每个控制器中不调用$this->load->view('header')$this->load->view('footer') 来加载视图“页眉”/“页脚”?也许是一个可以在每个视图中使用的模板?

【问题讨论】:

【参考方案1】:

这里有几个简单的方法可以帮助您入门:

创建模板类:

class Template 

    function load($view)
    
        $CI = &get_instance();
        $CI->load->view('header');
        $CI->load->view($view);
        $CI->load->view('footer');
    


在控制器中的使用:

$this->template->load('my_view');

使用主视图文件:

<!-- views/master.php -->
<html>
  <header>Your header</header>
  <?php $this->load->view($view, $data); ?>
  <footer>Your footer</footer>
</html>

在控制器中:

$this->load->view('master', array(
    'view' => 'my-view-file',
    'data' => $some_data
));

我更喜欢Template 类方法,因为它很容易添加方法来追加模板区域、加载 javascript 文件以及您需要的任何其他内容。我也更喜欢根据被调用的方法自动选择视图文件。像这样的:

if ( ! isset($view_file)) 
    $view_file = $CI->router->fetch_class().'/'.$CI->router->fetch_method();

如果控制器是 Users 并且方法是 index,这将加载 views/users/index.php

【讨论】:

我应该在哪里创建这个类,.? 把它放在application/libraries 中作为template.php。使用set_area('header', $file)set_template('three_column') 之类的方法对其进行扩展...只需保持简单并随时构建您需要的东西。您可以稍后进行审核并进行清理。 我必须添加 $autoload['libraries'] = array('Template', 'database');进入 application/config/autoload.php 。之后模板解决方案对我有用。谢谢【参考方案2】:

您需要以某种方式加载视图文件,这是 CI 用来包含文件的方式。

坚持标准,我认为这是最好的做法。

【讨论】:

【参考方案3】:

制作一个加载页眉和页脚并将数据放在中间的函数。

无论如何,构建 CI 的模型需要显式加载视图 (afaik)。

【讨论】:

【参考方案4】:

我通常扩展 CI 的 Loader 类来完成这个...

<?php
class MY_Loader extends CI_Loader 

    public function view($view, $vars = array(), $return = FALSE, $include_header = TRUE, $include_footer = TRUE)
    
        $content = '';

        if ($include_header)
        
            $content .= parent::view('header', $vars, $return);
        

        $content .= parent::view($view, $vars, $return);

        if ($include_footer)
        
            $content .= parent::view('footer', $vars, $return);
        

        return $content;
    

【讨论】:

以上是关于在 CI 中加载页眉和页脚视图的主要内容,如果未能解决你的问题,请参考以下文章

在 CI 模板加载器类中加载一个或多个视图

如何在 Codeigniter 中组合具有相同页眉和页脚的视图页面?

使页眉和页脚文件包含在多个 html 页面中

UICollectionView 页眉和页脚视图

基于路由组在错误页面中加载页脚

我们如何在滚动视图中设置过度滚动页眉和页脚?