让我说我有这个观点(主要)
<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调用刷新和加载,所以我需要它在不同的视图上 所以有人可以向我解释我该如何解决这个问题?
答案 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');