CodeIgniter将视图加载到视图中

时间:2016-08-19 10:43:36

标签: php codeigniter

我需要将视图加载到CodeIgniter中的视图中,但似乎无法使其工作。

我有一个循环。我需要将该循环放在多个视图中(相同的数据不同的页面)。因此,作为一个视图,我自己拥有循环,从控制器接收数组并显示数据。

但问题是数组不可用于第二个视图,它是空的

第二个视图加载正常,但数组if (arr.length == users.length) { 为空

所以,我尝试了很多东西,但根据文档,我可以做这样的事情:

控制器:

$due_check_data

但是数组变量// gather data for view $view_data = array( 'loop' => $this->load->view('checks/include/due_checks_table', $due_check_data, TRUE), 'check_cats' => $this->check_model->get_check_cats(), 'page_title' => 'Due Checks & Tests' ); $this->load->view('checks/due_checks',$view_data); 是空的

我刚收到这个错误,说变量是空的?

  

消息:未定义的变量:$due_check_data

4 个答案:

答案 0 :(得分:1)

您正在将$view_data数组传递给您的视图。然后,在您的视图中,您只能访问$view_data中包含的变量:

  • $loop
  • $check_cats
  • $page_title

视图中没有变量due_check_data

修改

第一个视图包含在变量$loop中,因此您只需在第二个视图中打印它(检查/ due_checks):

echo $loop;

如果您真的想在第二个视图中使用$due_check_data数组,为什么不简单地传递它?

$view_data = array(
   'loop' => $this->load->view('checks/include/due_checks_table', $due_check_data, TRUE),
   'check_cats' => $this->check_model->get_check_cats(),
   'page_title' => 'Due Checks & Tests',
   'due_check_data' => $due_check_data
);

$this->load->view('checks/due_checks',$view_data);

答案 1 :(得分:0)

您缺少<?php。应该是这样的

<?php echo $due_check_data; ?>

答案 2 :(得分:0)

控制器似乎没有错误。自己查看一些通知:

<?=$due_check_data?>

仅适用于 PHP&gt; = 5.4

<? echo $due_check_data; ?>

仅当您在 php.ini 文件中启用短开标记但不建议

时才可用

答案 3 :(得分:-1)

好的,我设法通过全局声明变量来解决这个问题,因此所有视图都可以使用它们。

        // gather data for view
        $view_data = array(
            'due_check_data' => $combined_checks,
            'check_cats'     => $this->check_model->get_check_cats(),
            'page_title'     => 'Due Checks & Tests'
        );

        $this->load->vars($view_data);
        $this->load->view('checks/due_checks');