如何使用CodeIgniter打开视图到视图中

时间:2014-12-08 14:28:41

标签: codeigniter view continuous-integration

我想知道如何使用CodeIgniter在视图中打开视图。

我想到这个: 在每个控制器中,我将调用默认的index.php-view。在那里,我将添加一个占位符来打开该控制器的视图。

这是个主意吗?或者,最佳做法是为每个控制器创建不同的视图,并将视图包含在:$this->view('header');

我是CI,FYI的新人; - )

1 个答案:

答案 0 :(得分:1)

这是迄今为止我发现的最简单灵活的方法。在您的视图文件夹中创建一个模板文件,该文件调用常用的元素,如标题,导航栏,页脚等。

模板具有用于传递特定内容的开放变量,例如,让我们创建模板:views / template_web.php 然后包含一些文件来创建基本页面结构 意见/ tmpl_web_head.php 意见/ tmpl_web_close.php 视图/ tmpl_web_foot.php

现在创建一个名为' web'的文件夹。对于具体内容 视图/网络/

带有一些特定的网络文件 意见/网络/ tmpl_web_head.php 意见/网络/ navbar.php 视图/网络/ navbar_bottom.php

所以这里是模板文件views / template_web.php     

// generic header 
$this->load->view('tmpl_web_head'); 

// folder with views specific for "web"
$templatefolder = 'web/';

// header and navbar specific to web   
$this->load->view($templatefolder.'header_top'); 

$this->load->view($templatefolder.'navbar'); 

// content that is passed from the controller    
if(isset($content01))
$this->load->view($templatefolder.$content01);

if(isset($content02))
$this->load->view($templatefolder.$content02);

if(isset($content03))
$this->load->view($templatefolder.$content03);

if(isset($content04))
$this->load->view($templatefolder.$content04);

if(isset($content05))
$this->load->view($templatefolder.$content05);

if(isset($content06))
$this->load->view($templatefolder.$content06);

$this->load->view($templatefolder.'navbar_bottom');


$this->load->view('tmpl_web_close');     
$this->load->view('tmpl_web_foot'); 

一旦设置了这个模板,它就很容易传递内容

控制器中的

  function doSomethingWonderful(){

  // whatever is happening in the controller 
  $data['results'] = $this->model->doSomething ;

   // the views you want shown on the page
   $data['content01'] = 'results_view';
   $data['content02'] = 'search_form';
   $data['content03'] = 'latest_news';

   // just one view call, the content is passed automatically 
   $this->load->view( 'template_web', $data );


   }

这方面有很多很棒但是当你制作不同版本的网站时,它真的很棒。您可以创建一个不同的模板,比如说web_beta并将这些文件放在web_beta文件夹中

然后在你的控制器中,除了你在视图调用中调用beta模板之外,一切都保持不变。

 $this->load->view( 'template_web_beta', $data );

这样可以非常快速地更新网站,进行更改等。