没有 "actions" 的控制器和页面? MVC
Controllers and pages without "actions"? MVC
据我了解,"MVC" 出现在网络之前,例如经常用于桌面软件。
如果我理解正确,控制器 在用户单击按钮时运行,这将触发操作。
但是如果我们谈论网页,场景就有点不同,假设用户点击了一个 link 然后它触发了一个动作。
但是,我的疑问来了,home 页面是 Controller 的一部分吗?
我的意思是,主页通常不是由网站内的用户操作执行的,只是 home,但注意到许多 PHP 框架使用Controller 用于 home,对吗?
另一个疑惑是在我的"home"我有几个项目,例如:
- 横幅
- 精选帖子
- 最近的帖子
这些项目中的每一个都有不同的 Model,我可以调用多个 Model 和 View 进入控制器?
这些是正确的步骤吗?还是大部分php框架都不严格?
你完全正确,我理解这种困惑。
在纯 MVC 方法中,控制器仅侦听用户操作并相应地更新模型。然后模型通知视图(通过观察者设计模式),视图更新自身,从模型访问它需要的数据。
在 web 之前是这样的,在桌面应用中,Model 和 View 是 运行 并发的,Model 可以通知 View。控制器没有设置视图。
在这个纯 MVC 模型中,您提到的关于 主页 的示例确实不需要控制器。 View 只会渲染自己,通过 Model 访问它需要的数据。控制器非常薄,只听用户操作并更新模型。他们就是这么做的。
在网络中,这个模型是不可能的,因此有替代方法。 Model 不能像在纯模型中那样通知 View,因此流行的框架要求您做的是在 Controller 中设置 View。这就是为什么对于 主页 的示例,您 需要 控制器,因为您将在那里设置视图及其所需的所有数据。
但是,我个人一直在写另一种方法,其中控制器不设置允许您保留微型控制器的视图。你可以在这里阅读:A better OOP approach to building MVC applications
因此我认为 主页 根本不需要控制器操作。 View 应该只渲染自己并访问它需要渲染的数据。正如您所说,控制器的作用是处理用户操作并相应地更新模型。如果它做的不止于此,它可能违反了 SRP。 Controller 不应该设置 View,而是 the View should get its own data from the Model.
据我了解,"MVC" 出现在网络之前,例如经常用于桌面软件。
如果我理解正确,控制器 在用户单击按钮时运行,这将触发操作。
但是如果我们谈论网页,场景就有点不同,假设用户点击了一个 link 然后它触发了一个动作。
但是,我的疑问来了,home 页面是 Controller 的一部分吗?
我的意思是,主页通常不是由网站内的用户操作执行的,只是 home,但注意到许多 PHP 框架使用Controller 用于 home,对吗?
另一个疑惑是在我的"home"我有几个项目,例如:
- 横幅
- 精选帖子
- 最近的帖子
这些项目中的每一个都有不同的 Model,我可以调用多个 Model 和 View 进入控制器?
这些是正确的步骤吗?还是大部分php框架都不严格?
你完全正确,我理解这种困惑。
在纯 MVC 方法中,控制器仅侦听用户操作并相应地更新模型。然后模型通知视图(通过观察者设计模式),视图更新自身,从模型访问它需要的数据。 在 web 之前是这样的,在桌面应用中,Model 和 View 是 运行 并发的,Model 可以通知 View。控制器没有设置视图。
在这个纯 MVC 模型中,您提到的关于 主页 的示例确实不需要控制器。 View 只会渲染自己,通过 Model 访问它需要的数据。控制器非常薄,只听用户操作并更新模型。他们就是这么做的。
在网络中,这个模型是不可能的,因此有替代方法。 Model 不能像在纯模型中那样通知 View,因此流行的框架要求您做的是在 Controller 中设置 View。这就是为什么对于 主页 的示例,您 需要 控制器,因为您将在那里设置视图及其所需的所有数据。
但是,我个人一直在写另一种方法,其中控制器不设置允许您保留微型控制器的视图。你可以在这里阅读:A better OOP approach to building MVC applications
因此我认为 主页 根本不需要控制器操作。 View 应该只渲染自己并访问它需要渲染的数据。正如您所说,控制器的作用是处理用户操作并相应地更新模型。如果它做的不止于此,它可能违反了 SRP。 Controller 不应该设置 View,而是 the View should get its own data from the Model.