我是CodeIgniter的新手,我正在尝试重新使用我传递给同一控制器中另一个函数的视图的$ data。
我有以下代码:
class MyClass extends CI_Controller
{
function func1()
{
$this->mdata['first'] = "first";
$this->mdata['second'] = "second";
$this->load->view('my_view', $this->mdata);
}
function func2()
{
var_dump($this->mdata);
}
}
事实是,显然,我不能在func2()...
中使用我的变量有人有诀窍吗?
感谢。
乙
答案 0 :(得分:2)
创建私有方法_create_mdata()
并在两种方法中调用它。如果不做这样的事情,就没有办法真正地分享数据。
// methods starting with an underscore are considered private by CodeIgniter.
// you may want to actually declare it private though. That is better practice
function _create_mdata()
{
$this->mdata['first'] = "first";
$this->mdata['second'] = "second";
}
function func1()
{
$this->_create_mdata();
// continue with func1
}
答案 1 :(得分:0)
class Your_Class {
public $mdata;
function func1()
{
$this->mdata['first'] = "first";
$this->mdata['second'] = "second";
$this->load->view('my_view', $this->mdata);
}
function func2()
{
var_dump($this->mdata);
}
}
现在“$this->mdata
”将有效。
希望它有所帮助。
答案 2 :(得分:0)
仅当用户浏览器访问yoursite.com/myclass/func1时才会调用func1。 现在,使用url转到func2只调用func2。因此,不分配mdata值。您可以使用构造函数来分配这些值。当我有更多时间时,我会提出一个代码示例。
答案 3 :(得分:0)
伪代码我还没有测试过。 你可能应该自动加载会话。
class Your_Class {
function func1()
{
$this->load->library('session');
$mdata = array( 'mdata' => array( 'first' => 'first',
'second' => 'second'
)
)
$this->session->set_userdata($mdata);
$this->load->view('my_view', $mdata['mdata']);
}
function func2()
{
$this->load->library('session');
$mdata = $this->session->userdata('mdata');
var_dump($mdata);
}
}