我想知道$this->load->vars()
在CodeIgniter中是如何工作的。文档相对含糊不清。
我有以下代码:
$init = $this->init->set();
$this->load->view('include/header', $init);
$this->load->view('include/nav');
$dates = $this->planner_model->create_date_list();
$this->load->view('planner/dates_content', $dates);
$detail = $this->planner_model->create_detail_list();
$this->load->view('planner/detail_content', $detail);
$this->load->view('include/footer');
但是,我的$dates
视图中还需要detail_content
数组。我试图用$this->load->vars()
加载它并希望它会附加到$detail
数组,因为CI文档声明如下:
您可以多次调用此功能。数据被缓存并合并到一个数组中以转换为变量。
如果我做$detail['dates'] = $dates;
会有效吗?它会将$dates
数组附加到$detail['dates']
吗?
提前致谢。
答案 0 :(得分:5)
$this->load->vars()
非常适合此目的。试试这个:
$init = $this->init->set();// Won't be passed to the next 2 views
$this->load->view('include/header', $init);
$this->load->view('include/nav');
$dates = $this->planner_model->create_date_list();
$this->load->vars($dates);
$this->load->view('planner/dates_content');
$detail = $this->planner_model->create_detail_list();
$this->load->vars($detail);
$this->load->view('planner/detail_content');
对我来说很奇怪的是,通常你将一个关联数组作为数据传递,比如$data['my_var_name'] = $var_value
,所以我假设你的模型调用返回已经用变量名(数组键)构建的数据,你将会在你的视图中使用我觉得奇怪,但后来我对你的应用程序一无所知。
这是一个更“传统”的版本:
$data['dates'] = $this->planner_model->create_date_list();
$this->load->view('planner/dates_content', $data);
$data['detail'] = $this->planner_model->create_detail_list();
// receives both dates and detail
$this->load->view('planner/detail_content', $data);
答案 1 :(得分:2)
您是否尝试过只构建一个传递给不同视图的数组?我发现$this->load->vars()
出乎意料。
答案 2 :(得分:2)
正如其他答案和用户指南中所述,使用$this->load->vars()
与在$this->load->view()
中包含第二个参数相同。
但是来自用户指南:
您可能希望独立使用此函数的原因是,您希望在控制器的构造函数中设置一些全局变量,并使它们在从任何函数加载的任何视图文件中都可用。
这对我而言,是您使用$this->load->vars()
的唯一原因。正如@madmartigan所说,将视图加载器与第二个参数一起使用会更方便。