在 Codeigniter 中,如何将视图文件写入视图文件?

Posted

技术标签:

【中文标题】在 Codeigniter 中,如何将视图文件写入视图文件?【英文标题】:Within Codeigniter, how do I write a view file to a view file? 【发布时间】:2013-07-15 18:34:31 【问题描述】:

我有一个thank_you.php 文件,其中只包含字符串“Thank you”。格式化为成功的/绿色。

我想在网站的特定区域显示此文本,但不知道该怎么做。在我的主视图文件中,我添加了以下行:

<?php $this->template->add_region('success'); ?>

“提交”按钮旁边。

在我的控制器中,我有一个函数,一旦被调用,它就会显示视图文件“thank_you.php”。

function greeter_thank_you() 
$this->template->write_view('success', 'thank_you.php');

我的模板文件中有标准的 $alert、$content、$main 等区域,但是如何将此视图文件回显到另一个视图文件中?我还需要其他方法吗?

【问题讨论】:

你用的是什么模板库,因为它不是CI自带的。 @PrinceEnder 这个问题解决了吗?任何反馈将不胜感激。 【参考方案1】:

您似乎在使用Collin Williams' CI Template library。

据我所知,您不能在另一个区域内定义一个区域,因此最好将内部区域的值(您称之为success)发送到main 区域。

如果您使用$this-&gt;template-&gt;write(); 方法将内容写入main 区域:

使用$this-&gt;load-&gt;view('thank_you', '', TRUE);获取thank_you视图文件的内容,并将其放在write()的第二个参数中的某处。

如果您使用$this-&gt;template-&gt;write_view() 方法:

使用以下内容:

$data = array(
    'foo'     => 'bar',
    'baz'     => 'qux',
    'success' => $this->load->view('thank_you', '', TRUE)
);

$this->template->write_view('main', 'main_region_view_file_here', $data/*, TRUE*/);

并在main区域的视图文件中添加以下内容:

if (! empty($success)) 
    echo $success;

我对 Collin Williams 的模板库没有任何经验,但我认为这可能会奏效。

顺便说一句,如果您有任何问题,我会全力以赴!

【讨论】:

【参考方案2】:

如果您想在另一个视图文件中加载一个视图文件。

只需输入

$this->load->view('FolderPath/FileNameHere');

希望它能解决你的问题。


编辑:

或者,如果您在对 Button 执行某些操作后想要加载另一个视图。 您可以将按钮重定向到该控制器。 在那里你可以写上面的行。

如果是锚按钮就放&lt;a class="BtnClass" href="ControllerPathHere"&gt;Submit&lt;/a&gt;

如果您正在使用一些模板库,请详细说明。

【讨论】:

我不想显得粗鲁,但您没有阅读并理解我的问题。 how do I echo this view file onto another view file? Is there some other way I need to go about it? 我在上面发布的内容应该可以正常工作,它会在另一个视图中加载一个视图,我每次都使用它,您只需使用它就可以将该视图的内容加载到页面的任何部分.但是,如果您正在使用任何 codeigniter 模板库,请告诉我们。 @SyedHaiderHassan 他正在使用模板解析器 @SyedHaiderHassan 我的帖子不仅仅是标题【参考方案3】:

在控制器中,您希望将视图输出缓冲到变量,并将变量传递给模板。 view 方法中的第三个参数允许您将视图输出作为字符串返回。

$viewData = array(
    'main' => $this->load->view('thank_you.php', '', true)
);

$this->load->view('template.php', $viewData);

// access the main template data with $main in template.php

查看本页底部:http://ellislab.com/codeigniter/user-guide/general/views.html

【讨论】:

【参考方案4】:

1-你可以这样传递:

 function greeter_thank_you()
 
       $data = array();
       $thank_page = $this->load->view('thank_you');
       $data['thank_you'] = $thank_page;

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


inside your main page

 <html>
  <body>
  <div id='thank'>
    <?=$thank_you?>
  </div>
  <!--The rest of your codes-->
 </body>
</html>

【讨论】:

以上是关于在 Codeigniter 中,如何将视图文件写入视图文件?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

HMVC集成在Codeigniter视图路径中。

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

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