2011-12-01 92 views
0

將變量分配給視圖的正確方法是什麼?將變量分配給視圖

$data['users'] = $this->users_model->get_all(); 
$this->load->view('users', $data); 
// and inside users.php view: foreach($users as $user) {} 

OR

$this->users = $this->users_model->get_all(); 
$this->load->view('users'); 
// and inside users.php view: foreach($this->users as $user) {} 

是否有該類型的情況下,一般的規則是什麼?

回答

5

第一種方法比第二種方法好得多,並且是將變量傳遞給視圖的可接受方式。

例如,假設您有兩個視圖。第一個視圖顯示系統中的所有用戶,第二個視圖顯示當前登錄的用戶。兩個視圖循環顯示$users變量並輸出其名稱。使用第二種方法,您必須在加載每個視圖之前將相應的數據分配給$this->users。必須在給定請求的所有加載視圖之間使用唯一的變量名將會失控。

此外,一些視圖可能會變得相當複雜。將視圖中需要的每個變量分配給控制器的屬性沒有任何意義。

+0

感謝您的快速響應,這是有道理的。聽起來好像可以使用$ this方法來處理全局變量(例如,config變量),如果我理解正確的話。 – donkeykong

+0

Donkeykong,在爲「$ this」全局CI對象創建任何附加屬性之前,我會猶豫不決。如果你想在那裏設置配置,我建議你使用/application/config/constants.php。在我的項目中,我爲CI控制器添加了一些屬性($ this),包括$ data,$ defaultLayout和$ displayView。這些與將數據傳遞到視圖,自動加載視圖或應用佈局/模板有關。 – MikeMurko