2011-05-31 70 views
1

予加載來自控制器的多個視圖,以顯示網頁。笨視圖與動態參數

$this->load->view('header'); 
$this->load->view('content', $data); 
$this->load->view('sidebar1', $data1); 
$this->load->view('sidebar2', $data2); 
$this->load->view('footer'); 

但是我認爲它不是一個乾淨的方法。可以通過創建單個主視圖來改進,例如包含所有上述視圖的「視圖/頁面」。然後,而不是調用所有的上述看法,我只能撥打主視圖,例如:

$this->load->view('main'); 

在這種情況下,我怎麼能傳遞的內容,sidebar1和sidebar2變量? 感謝

回答

0

在我的項目,我有一種傾向,做:

$this->load->vars($data); 
$this->load->view('template_name'); 

凡我在自身內部的其他視圖模板負載。

的笨文檔狀態的方法如下$這 - >負載>瓦爾():

「這個函數有一個關聯數組作爲輸入併產生使用PHP提取功能的變量此功能產生相同的結果作爲使用上述$這個 - >負載>視圖()函數的第二個參數。原因你可能想要使用此功能獨立是,如果你想設置一些全局變量在控制器的構造函數並讓他們成爲任何函數加載的任何視圖文件中。你可以有多次調用這個函數,數據獲取緩存併合併到一個數組轉換爲變量。「

使用$這個 - >負載>瓦爾在沒有加載數據,我的模板內的每個視圖($數據)的幫助。

0

使用這樣

 $newData = array_merge($data, $data1, $data2); 
    $this->load->view('main', $newData); 

如果沒有在$數據,$數據1,$數據2沒有同名的鍵,然後,它會工作,而無需修改任何的看法變量名稱更改。

2

傳遞數據對於每個視圖作爲數組到主視圖,再傳給作爲主視圖加載子視圖的那些陣列。

$data['sidebar1_data'] = array($one => 'one'); 
$data['sidebar2_data'] = array($two => 'two'); 

然後在你的主視圖:

$this->load->view('sidebar1', $sidebar1_data); 
$this->load->view('sidebar2', $sidebar2_data);