2011-12-01 91 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