我有控制器调用其他函数,但当我将它传递给视图时,函数中的数据没有传递。
controller home.php
:
class Home extends CI_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
$data[1] = 'Data1';
$data[2] = 'Data2';
$data[3] = 'Data3';
$this->more_data(); // this calls other function
$this->load->view('vhome', $data);
}
function more_data()
{
$data[4] = 'Data4';
$data[5] = 'Data5';
$data[6] = 'Data6';
}
}
当我在var_dump(get_defined_vars());
视图中执行vhome.php
时
它只显示了data1,data2和data3
array (size=15)
'_ci_data' =>
array (size=3)
'_ci_view' => string 'vhome' (length=5)
'_ci_vars' =>
array (size=3)
1 => string 'Data1' (length=5)
2 => string 'Data2' (length=5)
3 => string 'Data3' (length=5)
如何解决这个问题?
感谢
答案 0 :(得分:2)
这是因为$data
位于本地范围内,get_defined_vars
仅适用于调用的范围index()
。
分钟$data
4-6仅在more_data()
函数的范围内可用,而1-4仅在index()
函数的范围内可用。
答案 1 :(得分:2)
试试这个。创建一个类属性 $data
。
class Home extends CI_Controller
{
public $data;
function __construct()
{
parent::__construct();
}
function index()
{
$this->data[1] = 'Data1';
$this->data[2] = 'Data2';
$this->data[3] = 'Data3';
$this->more_data(); // this calls other function
$this->load->view('vhome', $this->data);
}
function more_data()
{
$this->data[4] = 'Data4';
$this->data[5] = 'Data5';
$this->data[6] = 'Data6';
}
}
希望这会有所帮助:)