使用Codeigniter加载多个视图的最佳选择是什么?

时间:2016-06-08 07:02:43

标签: javascript php jquery codeigniter

我想从一个函数加载多个视图,将页面分成3个部分

header.php
index.php
footer.php

我这样做:

$this->load->view('templates/header', $data);
$this->load->view('index');
$this->load->view('templates/footer');

但是,如果我想添加一些jquery文件和footer.php,这是上述代码无法实现的。

我从许多文章中看到的另一种方式

在视图索引页面中使用include函数,如下所示:

<?php include('header.php'); ?>
<?php include('footer.php'); ?>

但如果我在footer.php之后添加了几个jquery文件,它可能在上面的代码中(包含代码)。

但我喜欢这个load->view我可以将它与我的要求一起使用或包含功能最适合这个吗?

1 个答案:

答案 0 :(得分:2)

您可以在每个视图中使用$ this-load-&gt;视图,而不仅仅是控制器。

因此,在index.php视图文件中,您可以在顶部加载标题,并在页脚底部加载。

我根本不会在CodeIgniter中使用include()。 CI为您需要在其中使用的所有内容提供加载器。

更好的方法是定义一个可以加载模板的库或模型。这样,如果要更改顶部或底部包含的文件,则无需更改每个视图。更重要的是,您可以根据每个控制器使用此负载js,css,seo元数据等。

实现这一目标的方法是(让我们走模型路线):

  1. 创建一个名为TemplateModel的模型,其中包含一个接收$ data的函数渲染。
  2. $data中,您可以定义键:js,css,seo,content等。
  3. 使用$this->load->view('template', $data)从模型内部加载布局。
  4. 在您的控制器中,将您的视图作为数据返回(例如index.php)并将其作为$data['content']发送给模型:https://www.codeigniter.com/user_guide/general/views.html#returning-views-as-data 例如:

    $this->load-model('templateModel', 'template');
    $data['content'] = $this->load->view('index', '', TRUE);
    $this->template->render($data);
    
  5. 在模型呈现的视图中,打印应显示的内容(btw页眉和页脚)。