为什么我的数据没有正确传递到我的视图中?

时间:2010-03-30 17:46:03

标签: codeigniter variables

我的模型,视图和控制器没有正确交互,我不知道错误在哪里。

首先是控制器。根据{{​​3}},我在这里正确传递变量。

function view() {
        $html_head = array( 'title' => 'Estimate Management' );

        $estimates = $this->Estimatemodel->get_estimates();

        $this->load->view('html_head', $html_head);
        $this->load->view('estimates/view', $estimates);
        $this->load->view('html_foot');
    }

模特(短而甜):

function get_estimates() {
        $query = $this->db->get('estimates')->result();
        return $query;
    }

最后是视图,只是为了初始开发目的而打印数据:

<? print_r($estimates); ?>

现在导航到此页面时未定义。但是,我知道定义了$ query,因为它在我直接在视图中运行模型代码时起作用。

2 个答案:

答案 0 :(得分:2)

文档显示传递给视图的对象必须是关联数组。

$data = array(
   'estimates' => $estimates
);

$this->load->view('estimates/view', $data);

Docs here

答案 1 :(得分:2)

$estimates = $this->Estimatemodel->get_estimates();
$this->load->view('estimates/view', $estimates);

您正在加载$this->Estimatemodel->get_estimates()作为视图变量数组的返回值。换句话说,$estimates的所有子项(假设它可以被视为数组)在您的视图中可用。但不是父元素。

这里的关键是加载视图时第二个参数需要是一个值数组,而不仅仅是一个值。

$this->load->view('estimates/view', array('estimates' => $estimates));

那应该得到你正在寻找的结果,事实上,你已经在为html标题视图做了这个。即使该视图只有一个变量,它也作为数组的单个元素传递:

$html_head = array( 'title' => 'Estimate Management' );
$this->load->view('html_head', $html_head);