Codeigniter可重复使用控制器函数中的$ data

时间:2011-07-06 13:38:04

标签: php codeigniter

我是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()...

中使用我的变量

有人有诀窍吗?

感谢。

4 个答案:

答案 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);
        }
    }