我想从一个函数加载多个视图,将页面分成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
我可以将它与我的要求一起使用或包含功能最适合这个吗?
答案 0 :(得分:2)
您可以在每个视图中使用$ this-load-&gt;视图,而不仅仅是控制器。
因此,在index.php视图文件中,您可以在顶部加载标题,并在页脚底部加载。
我根本不会在CodeIgniter中使用include()
。 CI为您需要在其中使用的所有内容提供加载器。
更好的方法是定义一个可以加载模板的库或模型。这样,如果要更改顶部或底部包含的文件,则无需更改每个视图。更重要的是,您可以根据每个控制器使用此负载js,css,seo元数据等。
实现这一目标的方法是(让我们走模型路线):
$data
中,您可以定义键:js,css,seo,content等。$this->load->view('template', $data)
从模型内部加载布局。在您的控制器中,将您的视图作为数据返回(例如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);
在模型呈现的视图中,打印应显示的内容(btw页眉和页脚)。