codeigniter:在视图的div内加载视图

时间:2012-12-27 14:35:48

标签: codeigniter codeigniter-2

让我说我有这个观点(主要)

<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的内容,该视图是从另一个控制器调用的

control2.php

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

tbl.php view

<ul>$x</ul>

我该怎么做?

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

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

3 个答案:

答案 0 :(得分:8)

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

// 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-&gt;视图方法 - 同时将TRUE作为第三个参数传递 - 这将返回该视图的内容为一个字符串(而不是将其输出到浏览器)。现在,你有一个$ data变量传递给包含表格html的main视图,你可以在主视图中回显它。

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

在视图中使用php块中的以下内容

$CI = &get_instance();
$CI->load->view('view_name');