0

可以说我hv这个观点(主要)

<body>
lorem epsim
<div table></div>
lorem epsim
</body>

在控制器 control1.php 我做

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

现在我需要从另一个视图(tbl.php)加载 div=table 的内容,它是从另一个控制器调用的

控制2.php

function load_table(){
$data['x']=1;
$this->load->view('tbl.php',$data);
}

tbl.php 视图

<ul>$x</ul>

我怎样才能做到这一点 ?

我试图从控制器 1 加载控制器 2 并将函数 load_table 分配给变量并将其传递给主视图,但它没有工作,因为 load->view 被执行而不是将输出保存到变量..

原因: 我需要这样做是因为 tbl.php 视图是一个复杂的表,我需要通过 ajax 调用刷新和加载,所以我需要它单独在不同的视图上,所以有人可以向我解释我该如何工作出去 ?

4

3 回答 3

9

您不能从另一个单独的控制器调用一个控制器方法。但是,您可以获取表格视图的输出并使用它:

// main.php
<body>
lorem epsim
<div table><?php echo $table_content; ?></div>
lorem epsim
</body>

.

// control1.php

$table_data['x'] = 1;
$data['table_content'] = $this->load->view('tbl.php', $table_data, TRUE);

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

因此,您将数据传递给 tbl.php 视图并将其传递给 load->view 方法 - 也TRUE作为第三个参数传递 - 它将将该视图的内容作为字符串返回(而不是将其输出到浏览器)。现在,您有一个 $data 变量要传递给main包含表 html 的视图,您可以在主视图中回显它。

如何$data['table_content']从视图中获取数据取决于您。您可以在control1.php中创建另一个控制器方法,您可以创建一个帮助文件,该文件可以将视图加载到字符串中并返回,等等。

于 2013-01-04T20:34:37.960 回答
1

也许您可以在其中创建一个包含表格代码的视图,然后您可以在 div 中执行 ajax

<div id="for_ajax">
       <?php $this->load->view('table'); ?>
</div>

我有类似的需求,但我的需求就像问题的评论墙。

于 2012-12-27T15:59:07.627 回答
1

在 php 块中使用以下视图

$CI = &get_instance();
$CI->load->view('view_name');
于 2014-03-11T17:07:27.910 回答