如何使用 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以使视图显示更快?