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

Posted

技术标签:

【中文标题】如何使用 CodeIgniter 将视图打开到视图中【英文标题】:How to open a view into a view with CodeIgniter 【发布时间】:2015-02-06 05:42:57 【问题描述】:

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

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

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

我是 CI 新手,仅供参考;-)

【问题讨论】:

Best method of including views within views in CodeIgniter 的可能重复项 【参考方案1】:

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

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

现在为特定内容创建一个名为“web”的文件夹 浏览量/网络/

带有一些特定的网络文件 意见/网络/tmpl_web_head.php 视图/web/navbar.php 视图/web/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 );

这允许非常快速地更新网站、进行更改等。

【讨论】:

以上是关于如何使用 CodeIgniter 将视图打开到视图中的主要内容,如果未能解决你的问题,请参考以下文章

如何将codeigniter视图文件gmap存储到redis以使视图显示更快?

CodeIgniter:将参数从视图传递到控制器?

将变量从视图传递到视图 codeigniter

在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?

CodeIgniter - 如何在视图中打开表单?

Codeigniter - 如何将 JSON 作为参数传递给视图 [重复]