代码之家  ›  专栏  ›  技术社区  ›  dmanexe

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

  •  2
  • dmanexe  · 技术社区  · 16 年前

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

    首先是控制器。根据 Code Igniter documentation ,我在这里正确传递变量。

    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 回复  |  直到 16 年前
        1
  •  2
  •   Tim Lytle    16 年前
    $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);
    
        2
  •  2
  •   seanmonstar    16 年前

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

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

    Docs here

    推荐文章