Php 将变量从一个控制器方法传递到另一个控制器方法

Php 将变量从一个控制器方法传递到另一个控制器方法,php,jquery,codeigniter,shared-state,Php,Jquery,Codeigniter,Shared State,我正在使用CodeIgniter框架。我加载一个主视图,其中包含几个选项卡,这些选项卡通过AJAX加载中的其他视图。我的控制器类如下所示: class MainController extends MY_Controller function main($id=0) { $this->load->model('main_model'); $this->data['info'] = $this->main_model->

我正在使用CodeIgniter框架。我加载一个主视图,其中包含几个选项卡,这些选项卡通过AJAX加载
中的其他视图。我的控制器类如下所示:

class MainController extends MY_Controller
    function main($id=0)
    {
        $this->load->model('main_model');
        $this->data['info'] = $this->main_model->foo($id);
        $this->load->view('main_view', $this->data);
    }

    function tab1()
    {
        $this->load->view('tab1_view', $this->data);
    }
}

我通过调用
mywebapp/main/123
加载主页。
id
可以在
main
方法和
main\u视图中使用。但是当我单击选项卡时,我想在
主视图中的
中使用
id
。最好的方法是什么?也许有什么方法可以使这个变量对控制器中的每个方法都是全局的

我使用jQuery加载选项卡:

$("#div").load(mywebapp/tab1);
使用
\u构造()

或者,您可以将其更改为使用:
$this->uri->uri\u to_assoc(n)
,它们是
/method/controller/key/value/key2/value2

示例:

/user/search/name/joe/location/UK/gender/male

[array]
(
    'name' => 'joe'
    'location'  => 'UK'
    'gender'    => 'male'
)

不幸的是,这对我不起作用。当我用$(“div”).load(mywebapp/tab1)加载一个“子视图”时,`MainController
再次被加载,
$this->\u id
被重写为空(
$this->uri->segment(2)
是tab1),所以传递它$('div').load('mywebapp/tab1?somevar=');如果存在某个变量,则覆盖$this->\u id
/user/search/name/joe/location/UK/gender/male

[array]
(
    'name' => 'joe'
    'location'  => 'UK'
    'gender'    => 'male'
)