【问题标题】:CodeIgniter loading a view into a viewCodeIgniter 将视图加载到视图中
【发布时间】:2016-08-19 10:43:36
【问题描述】:

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

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

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

第二个视图加载正常,但数组 $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是空的

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

消息:未定义变量:due_check_data

【问题讨论】:

  • 你可以关注这个链接stackoverflow.com/questions/9402924/…
  • 是的,这不起作用。我仍然得到一个空变量。我认为问题是将循环数组从控制器传递到视图
  • 问题是传递多个视图吗?
  • 不,我可以很好地加载第二个视图,但是在控制器中创建的数组没有进入第二个视图,它是空的
  • 首先确保控制器的 $combined_checks 不为空

标签: php codeigniter


【解决方案1】:

您正在将$view_data 数组传递给您的视图。那么,在你看来,你只能访问$view_data中包含的变量:

  • $loop
  • $check_cats
  • $page_title

视图中没有变量due_check_data


编辑

第一个视图包含在变量$loop 中,因此您可以在第二个视图中打印它(checks/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);

【讨论】:

    【解决方案2】:

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

    <?=$due_check_data?>
    

    这仅适用于 PHP >= 5.4

    <? echo $due_check_data; ?>
    

    仅当您在 php.ini 文件中启用短打开标记时才可用,但不推荐

    【讨论】:

    • 短标签已启用,我尝试过使用和不使用
    【解决方案3】:

    您缺少&lt;?php。应该是这样的

    <?php echo $due_check_data; ?>
    

    【讨论】:

      【解决方案4】:

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

              // 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');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-18
        • 2011-10-07
        • 2012-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        相关资源
        最近更新 更多