CodeIgniter $ this-> load-> vars()

时间:2011-04-24 12:13:13

标签: php codeigniter

我想知道$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']吗?

提前致谢。

3 个答案:

答案 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所说,将视图加载器与第二个参数一起使用会更方便。