Codeigniter:数据从控制器传递到视图背后的过程是什么?


Codeigniter: What is the process behind data passing form controller to view?

我实际上并没有问语法和如何做到这一点。我从:codeigniter:将数组从控制器传递到视图

我需要问它实际上是如何工作的,以及这个过程的原因。

我有一个控制器类与func..

public function index()
{
    //echo 'hello world';
    $this->load->model('Site_model');
    var_dump($this->Site_model->getAll()); // just to troubleshoot
    $data['a'] = $this->Site_model->getAll();
    var_dump($data); // just to troubleshoot
    $this->load->view('home', $data);
}

当我试图直接访问视图

中的$data数组时

抛出错误,需要作为<?php var_dump($a); ?>

访问

为什么我们不能直接使用

public function index()
{
    //echo 'hello world';
    $this->load->model('Site_model');
    var_dump($this->Site_model->getAll()); // just to troubleshoot
    $data = $this->Site_model->getAll();
    var_dump($data); // just to troubleshoot
    $this->load->view('home', $data);
}

,并直接在视图页

中访问数组<?php var_dump($data); ?>

后面使用的是一个简单的过程。它只是使用了一个php函数。

extract($data);

允许所有的键在视图中作为变量使用。

查看这里的文档

在这里使用extract()有很多原因:

    它允许我们在控制器中使用未命名的数组,如:$this->load->view('home', array('foo' => $bar));;当传递给另一个函数时,保持相同的非全局变量名是最简单的方法。