2012-09-19 68 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

相關問題