2016-06-08 99 views
2

我想从一个函数的多个视图,devided页面加载到3个部分使用Codeigniter加载多个视图的最佳选择是什么?

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->view我可以用它来满足我的要求或者包含函数最适合这个吗?

+0

如果你想通过传递JS文件名列表作为数组像'阵列(“a.js”包括使用'负载> view',你可以做一些footer.php js文件, 'b.js')'转换为footer.php'load-> view',并在你的head.php/footer.php中有一个单独的帮助函数,它将获取js名称列表(如果存在)并形成适当的显式链接并将它们插入到您的代码中。 – coderz

回答

2

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

因此,在您的index.php视图文件中,您可以在顶部加载标题,并在页脚底部。我不会在codeIgniter中使用include()。 CI拥有所有你需要在里面使用的装载器。

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


来实现,这是(我们的模型路线)的方式:

  1. 创建一个名为TemplateModel与函数模型渲染接收$的数据。
  2. $data您可以定义键:js,css,seo,内容等。
  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页眉和页脚)。

相关问题