【问题标题】:What is best option to load multiple views using Codeigniter? [duplicate]使用 Codeigniter 加载多个视图的最佳选择是什么? [复制]
【发布时间】:2016-06-08 07:02:42
【问题描述】:

我想从一个函数中加载多个视图,将页面分为 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,这在上面的代码中是不可能的。

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

在视图索引页面中使用包含功能,如下所示:

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

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

但我喜欢这个load-&gt;view 我可以根据我的要求使用它吗?或者包含功能最适合这个?

【问题讨论】:

  • 如果您想使用load-&gt;view 在footer.php 中包含一些js 文件,您可以通过将js 文件名列表作为数组(如array('a.js','b.js'))传递给footer.php load-&gt;view并在你的 head.php / footer.php 中有一个单独的帮助函数,它将获取 js 名称列表(如果存在)并形成适当的显式链接并将它们插入你的代码中。

标签: javascript php jquery codeigniter


【解决方案1】:

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

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

我根本不会在 CodeIgniter 中使用include()。 CI 有加载器,可以满足您在其中使用的所有需求。

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


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

  1. 使用接收 $data 的函数 render 创建一个名为 TemplateModel 的模型。
  2. $data 中,您可以定义键:js、css、seo、content 等。
  3. 使用 $this-&gt;load-&gt;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. 在模型渲染的视图中,打印内容应该显示的位置(顺便说一下页眉和页脚)。

【讨论】:

    猜你喜欢
    • 2010-11-16
    • 2021-03-22
    • 2012-03-15
    • 2012-09-02
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多