2011-05-31 71 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);