如何自动加载页眉和页脚视图?

Posted

技术标签:

【中文标题】如何自动加载页眉和页脚视图?【英文标题】:How do I automatically load a header and footer view? 【发布时间】:2019-12-09 05:48:04 【问题描述】:

我是使用 CodeIgniter 的新手,但我对 mvc 结构和 CodeIgniter 本身有足够的了解,可以做一些简单的事情,比如在控制器中加载视图和自动加载库等。但我遇到的问题是我有一个页眉和页脚视图,我希望每次加载视图文件时自动加载。

我进行了一些搜索,但很多建议都过时了,或者有时我根本不明白解决方案。我已经创建了标题视图并在其中链接了我的 CSS,还创建了我的页脚视图。所以假设我想加载默认的欢迎页面,如下所示:

public function index() 
      $this->load->view('welcome_message');

我可以像这样手动加载它们:

public function index() 
      $this->load->view('common/header');
      $this->load->view('welcome_message');
      $this->load->view('common/footer');

但我想要的是像正常一样加载视图并自动加载我的页眉和页脚。我知道这需要使用具有某种模板功能的自定义库来完成,但我不知道如何从头开始。

【问题讨论】:

为什么不使用基本控制器并从那里加载页眉和页脚? 【参考方案1】:

我这样做了,它对我有用。

MY_Loader.php

class MY_Loader extends CI_Loader
    public function template($content,$var=array())
        $this->view('common/header');
        $this->view($content,$var);
        $this->view('common/footer');
    

放入core文件夹。

在你的控制器中:

 public function index()
   $content = "welcome_message";
   $data = array();
   $data['name'] = "Max";
   $data['country'] = "USA";
   $this->load->template($content,$data);
 

调用视图中的数据:

<html>
  <?php echo $name.' - '.$country; ?>
</html>

【讨论】:

啊,漂亮又简单!你如何传递数据呢?对于正在传递的任何数据,我是否需要向模板函数添加第二个参数? 我知道这是很久以前发布的,但是使用它不允许我将视图文件放在主视图文件夹的子文件夹中,有什么补救措施吗?【参考方案2】:

创建一个名为MY_Controller 的核心控制器类,并使每个控制器都扩展该控制器:

class MY_Controller extends CI_Controller


    public $data = array();

    public function __construct()
    
        parent::__construct();
    

    public function render($view)
    
        $this->view('layouts/header', $this->data);
        $this->view($view, $this->data);
        $this->view('layouts/footer', $this->data);
    


现在在您的控制器中:

class Welcome extends MY_Controller


    public function __construct()
    
        parent::__construct();
    

    public function index()
    
        $this->data['title'] = 'Welcome Home';
        $this->render('welcome_view');
    


【讨论】:

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

Facebook 如何在加载不同页面时保持页眉和页脚固定?

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

如何在 C# VSTO Word 加载项中在页码旁边设置页眉和页脚文本?

Nginx 花式索引页眉和页脚从不加载

自定义 WordPress 模板仅加载页眉和页脚

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