在 PHP MVC 中创建子视图
Posted
技术标签:
【中文标题】在 PHP MVC 中创建子视图【英文标题】:Creating a subview in PHP MVC 【发布时间】:2012-04-27 00:51:37 【问题描述】:我最近浏览了一些关于如何编写自己的 php MVC 框架的教程。为了避免一些问题和 cmets:我不想在生产环境中使用它,我只是喜欢摆弄并了解 MVC 中发生了什么。
到目前为止,我可以拥有单页,例如。 http://domain/news/show/3 向我展示了数据库中 id 为 3 的新闻记录,http://domain/news/all 在一页上将它们全部列出。
现在我有多个实体和多个列表,并希望它们都出现在一个页面上。最好是打开时看到的页面http://domain/
我是否必须编写一个新模型和控制器来调用其他模型?我有点不确定如何实现这一目标。
【问题讨论】:
【参考方案1】:据我所知,对此没有严格的定义或约定。
我会这样做:
类概述
Controller_Homepage
Controller_News
Model_NewsArticle
行为
Controller_Homepage
Action_Index
获取多个Model_NewsArticle
实体,渲染它们,并将输出传递给查看。还可以获取您可能需要的任何其他实体并将其渲染输出提供给查看。
Controller_News
Action_List
获取多个 Model_NewsArticle
实体,对其进行渲染,然后将输出传递给查看。
Action_View
调用Model_NewsArticle::factory($id)
,对其进行渲染,并将输出传递给视图。
Model_NewsArticle
包含一个接受$id
的静态factory
方法。返回Model_NewsArticle
的实例。
包含用于查找多篇文章的方法。一个查询构建器在这里会很好。
这绝不是全面的,我遗漏了很多小细节,但它相当简单而且相当枯燥。
【讨论】:
【参考方案2】:这确实是一个偏好问题。拥有另一个控制器和模型使大型项目中的代码分离更容易。就个人而言,我只会制作一个新的控制器,因为它是一个不同的页面,可能有不同的操作,我会使用现有的模型来获取数据以保持你的代码干燥(不要重复你自己)。
【讨论】:
以上是关于在 PHP MVC 中创建子视图的主要内容,如果未能解决你的问题,请参考以下文章