PHP MVC问题
有人能告诉我将值从控制器传递到视图的最佳方式是什么吗?如果有人玩过Codeignator,他们就会明白我的意思。我查看了CIs代码,但找不到处理此问题的文件。我很想知道这是怎么做到的 谢谢 据我所知,不一定有“最好”的方法,但有一种常用的方法,我见过很多次,我自己也用过。它通常涉及关联数组,以及函数或 基本上,您所要做的就是使用将成为模板变量的键将数据设置为关联数组PHP MVC问题,php,Php,有人能告诉我将值从控制器传递到视图的最佳方式是什么吗?如果有人玩过Codeignator,他们就会明白我的意思。我查看了CIs代码,但找不到处理此问题的文件。我很想知道这是怎么做到的 谢谢 据我所知,不一定有“最好”的方法,但有一种常用的方法,我见过很多次,我自己也用过。它通常涉及关联数组,以及函数或 基本上,您所要做的就是使用将成为模板变量的键将数据设置为关联数组 //inside the controller $data['name'] = 'my name'; $data['zip'] =
//inside the controller
$data['name'] = 'my name';
$data['zip'] = '90210';
$data
数组以某种方式直接或间接地传递到视图,并通过extract()
或使用变量循环进行提取(实际上是一样的)。然后可以包含模板,并且变量位于局部范围内
//inside the view rendering process
extract($data);
//$name and $zip now exist
代码点火器遵循这个确切的程序。在最新版本(1.7.1)中的system\libraries\Loader.php
中,有一个名为view()
的函数,您可以在CI控制器中调用该函数来加载视图/模板(在CI中也是如此)。将数据数组作为第二个参数传递
view()
在同一个文件中调用名为\u ci\u load()
的内部函数,该函数提取传递给它的数据(并执行一些其他古怪的缓存操作)。在本地函数作用域中,您的变量已经准备就绪,并且可以在后续的include()
之后在模板内部进行操作,因为包含文件中发生的所有事情都存在于本地\u ci\u load()
函数作用域中
我以前在一个快速而肮脏的自制MVC设置中使用了完全相同的设计。这是非常有效的。据我所知,不一定有“最好”的方法,但有一种常用的方法,我见过很多次,我自己也用过。它通常涉及关联数组,以及函数或
基本上,您所要做的就是使用将成为模板变量的键将数据设置为关联数组
//inside the controller
$data['name'] = 'my name';
$data['zip'] = '90210';
$data
数组以某种方式直接或间接地传递到视图,并通过extract()
或使用变量循环进行提取(实际上是一样的)。然后可以包含模板,并且变量位于局部范围内
//inside the view rendering process
extract($data);
//$name and $zip now exist
代码点火器遵循这个确切的程序。在最新版本(1.7.1)中的system\libraries\Loader.php
中,有一个名为view()
的函数,您可以在CI控制器中调用该函数来加载视图/模板(在CI中也是如此)。将数据数组作为第二个参数传递
view()
在同一个文件中调用名为\u ci\u load()
的内部函数,该函数提取传递给它的数据(并执行一些其他古怪的缓存操作)。在本地函数作用域中,您的变量已经准备就绪,并且可以在后续的include()
之后在模板内部进行操作,因为包含文件中发生的所有事情都存在于本地\u ci\u load()
函数作用域中
我以前在一个快速而肮脏的自制MVC设置中使用了完全相同的设计。它非常有效。您可能想试试它。我还没有试过代码点火器。您可能想试试的。我还没有试过代码点火器。在中,它非常简单
class IndexController {
public function IndexAction {
$this->view->name='Name';
}
}
使用$this->view->xxxx在视图中设置变量。在中,它非常简单
class IndexController {
public function IndexAction {
$this->view->name='Name';
}
}
使用$this->view->xxxx在视图中设置变量。这是非常特定于您的框架的(我想您正在滚动自己的),您可能需要提供更多的细节。这是非常特定于您的框架的(我想您正在滚动自己的),您可能需要提供更多的细节。