Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter:将表单控制器传递给视图的数据背后的过程是什么?_Php_Codeigniter - Fatal编程技术网

Php Codeigniter:将表单控制器传递给视图的数据背后的过程是什么?

Php Codeigniter:将表单控制器传递给视图的数据背后的过程是什么?,php,codeigniter,Php,Codeigniter,我并不是在问语法和怎么做。 我是从以下方面得到的: 我需要问一下它是如何工作的,以及这个过程的原因是什么 我有一个带有func的控制器类 public function index() { //echo 'hello world'; $this->load->model('Site_model'); var_dump($this->Site_model->getAll()); // just to troubleshoot $data[

我并不是在问语法和怎么做。 我是从以下方面得到的:

我需要问一下它是如何工作的,以及这个过程的原因是什么

我有一个带有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数组时

它抛出错误,需要以

为什么我们不能直接使用这个

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函数

extract($data);
这样,所有键都可以用作视图上的变量


请参阅文档

使用extract()的原因有很多:

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

  • 实际上,您应该问,使用MVCWhy而不是第二个选项的目的是什么。。为什么提取。。这也可以满足这个标准吗?@shehzadbila,如果你真的学习了一些MVC的基础知识,你就会意识到控制器永远不应该将信息传递给视图@stackup没有什么问题,可以在您创建的任何框架中随意使用它。然而,Ellis实验室决定采用这种格式,可能是因为
    echo$title
    看起来比echo
    $data['title']
    更整洁,实际上出于好奇,我试过了。。它抛出错误未定义变量:dataSo此特定语法由ellis使用。。我还没有尝试过其他MVC。。多谢各位。另请看问题。你能澄清你的第一点吗。。比如如何在视图中访问该数组以及它的作用是什么application@stackup您可以将此数组视为变量的包装器来保存它们的名称。例如,在控制器中:
    $this->load->view('home',array('foo'=>5))
    将变为
    $foo
    ,视图中的值为
    5
    ,依此类推。