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

时间:2013-07-15 18:34:31

标签: php codeigniter templates view region

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

我想在网站的特定区域显示此文字,但不知道如何去做。在我的主视图文件中,我添加了一行:

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

旁边的“提交”按钮。

在我的控制器中,我有一个函数应该在调用后显示视图文件“thank_you.php”。

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

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

4 个答案:

答案 0 :(得分:1)

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

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

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

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

  • 如果您使用$this->template->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的模板库没有任何经验,但我认为这可能会有所帮助。

顺便说一句,如果你有任何问题,我全都听见了!

答案 1 :(得分:0)

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

输入

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

我希望它能解决你的问题。


编辑:

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

如果它是一个锚按钮,只需添加<a class="BtnClass" href="ControllerPathHere">Submit</a>

如果您使用的是某些模板库请详细说明。

答案 2 :(得分:0)

在控制器中,您希望将视图输出缓冲到变量,并将变量传递给模板。 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

答案 3 :(得分:0)

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>