【发布时间】:2011-10-15 21:25:09
【问题描述】:
我正在创建一个自定义 MVC 框架。
我在 codeIgniter 框架之后对其进行了松散的建模,但它在很大程度上是完全自定义的。
我已经将 URL 路由到适当的控制器操作,但我被困在生成可以利用控制器生成的数据的视图的点上。
我已经定义了视图(静态 HTML 和内联 php 准备好填充动态数据),并且我有我的基本控制器的析构函数 require()'ing 视图以便用视图填充浏览器...这里是代码:
public function __destruct()
{
if ($this->bSuppressView === false)
{
require(APP_PATH.'views/layout/header.php');
require(APP_PATH.'views/'.$this->sController.'/view.'.$this->sController.'.'.$this->sAction.'.php');
require(APP_PATH.'views/layout/footer.php');
}
}
基本上,当控制器完成执行时,基本控制器的拆卸过程将包括全局标题视图、控制器的操作视图,然后是全局脚注视图,它应该使用 URL 的所有内容填充网页被请求...
但是,我无法从视图代码中的嵌入式 php 访问任何全局定义的变量。在我的引导类中,我定义了一堆局部变量,例如我的配置变量等,但视图似乎认为这些变量未定义。此外,我不确定如何允许视图访问控制器可能生成的数据。我应该在哪里“粘贴”它以使其对视图可用?
如果不清楚,请告诉我,我会更新。 谢谢!
更新:我发现在这样做的同时,视图的“环境”在控制器对象中,据我所知,这是一件很棒的事情!除了在控制器中,我不必在任何地方传播任何东西,我可以在视图中使用“$this->”来从控制器类中访问任何公共或私有的东西!!!
这就留下了一个问题:这是“通常”在 MVC 中如何完成的吗?传播视图的最佳方式是什么?我认为这将适合我的目的,如果我发现仅将嵌入式视图 php 视为“在调用控制器的范围内”的限制,我会回帖...
【问题讨论】:
标签: model-view-controller views