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

时间:2014-08-18 12:10:33

标签: php codeigniter

我实际上并没有问语法和它是如何做的。 那是我从codeigniter: pass array from controller to view

获得的

我需要问一下它的实际效果以及该过程的原因。

我有一个带有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); ?>的形式访问数组

2 个答案:

答案 0 :(得分:3)

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

extract($data);

这使得所有键都可以在视图中用作变量。

查看文档here

答案 1 :(得分:0)

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

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