0

我相信模板不应该只包含任何逻辑 { } 并且包含和阻止部分就是这样。在 MVC 框架中,V 通常是与 HTML 混合的原始 php,这对于习惯于清理 HTML 的人来说非常糟糕,对于设计师来说是一场噩梦。但是将视图逻辑放在控制器中也是一种错误的方法。

我想知道如何使它像这样。请求->控制器->加载模型...逻辑将所有内容发送到->查看->查看逻辑块...->模板

这在 Laravel 或 Fuelphhp 等框架中是否可行?或者更一般地说,这甚至是一个好习惯吗?

4

3 回答 3

3

View 是 MVC 的一部分,负责表示逻辑。正确编写的视图将从模型层获取信息,并根据这些信息决定用户应该得到什么响应。

如果视图的任务是创建 HTML 响应,它将使用多个模板的组合 (存档版本:https ://archive.md/CiHhD )来创建它。或者它可能只是将 HTTP 标头发送回浏览器。

在不同的情况下,视图可能只是为 REST API 生成 JSON 或为 SOAP 生成 XML。

但在所有这些情况下,视图决定了如何表示信息。Controller 只负责改变模型层和当前视图的状态。

附言

MVC 本身是一种设计模式,它由两层组成:表示层和模型层。模型层处理所有领域的业务逻辑,而表示层——处理用户界面和交互。

没有“控制器层”或“视图层”之类的东西。

大多数 Rails 克隆坚持认为视图是模板并将 ORM 称为“模型”的原因很简单。这些框架是为快速原型设计(生成一次性代码)而不是可维护性而创建的。

于 2012-09-04T11:14:58.057 回答
3

非常普遍:许多 PHP 框架实现的“视图”不是很好。没有什么说视图只需要是一个模板文件,或者它根本就需要是一个模板。视图是可视化模型数据的一段代码。这可以根据需要变得复杂或简单。它可以是返回 JSON、二进制数据或其他任何内容的类。它根本不需要涉及 HTML。

如果它确实涉及 HTML,那么没有什么说控制器需要基本上设置所有变量,然后include是 HTML 模板。那太少了。视图应该是一段独立的代码,可能是一个类,它可以做任何需要做的事情来可视化某个数据或对象。一个视图可以包含多个类。在从磁盘加载任何 HTML 模板之前,视图中可能存在一整层逻辑。在您的应用中做最有意义的事情。

于 2012-09-04T10:19:00.567 回答
0

我同意你上面所有的观点......

逻辑不属于视图......除非它是与该特定视图直接相关的视图逻辑。允许一些基本逻辑可以防止类爆炸,您尝试围绕自己的规则来解决视图应该是什么。底线规则是视图应该在请求结束时发生,并且只读取/查询模型。通过将逻辑移动到类中来避免重复。

视图逻辑不属于控制器......主要是因为容易纠结,控制器对模型进行更改,然后调用视图进程。

通常,您应该根据处理传入输入并修改模型的控制器层和呈现模型的视图层来组织您的工作。

大多数框架和原始 PHP 都可以用来遵守这种道德规范。

于 2012-09-04T10:32:27.843 回答