2012-09-19 72 views
0

我正在使用CodeIgniter框架。我加载了一个主视图,其中包含多个选项卡,这些选项卡通过AJAX加载<div>中的其他视图。我的控制器类看起来是这样的:将变量从一种控制器方法传递给另一种

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_view。但是当我点击标签时,我想在main_view<div>中也使用id。什么是最好的方法来做到这一点?也许有什么办法可以使这个变量在控制器中的每个方法都是全局的?

我使用jQuery加载标签:

$("#div").load(mywebapp/tab1); 
+0

有什么问题吗? – wesside

回答

1

使用__construct()

class MainController extends MY_Controller 

protected $_id; 

    public function __construct() 
{ 
     $this->_id = $this->uri->segment(3); 
} 

    function main() 
    { 
     $this->load->model('main_model'); 
     $this->data['info'] = $this->main_model->foo($this->_id); 
     $this->load->view('main_view', $this->data); 
    } 

    function tab1() 
    { 
     //available here too 
     echo $this->_id; 
     $this->load->view('tab1_view', $this->data); 
    } 
} 

或者你可以改变这种使用方法:$this->uri->uri_to_assoc(n)这是键值对后/method/controller/key/value/key2/value2

例子:

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

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

这可悲的是不适合我。当我用$(“div”)加载'subview'。load(mywebapp/tab1)''MainController'再次加载并且'$ this - > _ id'变得空白('$ this-> uri-> segment (2)'是tab1) – bausa

+0

所以通过它。 $('div')。load('mywebapp/tab1?somevar = _id;?>');如果存在某个var,则覆盖$ this - > _ id – wesside

相关问题