MVC for dummies:为什么控制器必须向视图发送任何内容?

mvb*_*fst 4 php model-view-controller frameworks design-patterns ruby-on-rails

如果我做到这一点,那么Controller的功能就是处理POST数据,并通过Model在技术上改变应用程序的状态(例如DB).

据我所知,View也从模型中获取数据.

这就是我理解工作流程的方式:

客户端请求 - > App Front Controller- >(如果method = POST - > Controller) - > View- >返回客户端

这里Model用于Controller读取和写入数据以及View读取数据.

因此,每次加载页面时都不会使用控制器,事实上,只有在添加/更新应用程序数据时才使用控制器.大多数时候控制器被绕过.

那么,为什么几乎所有关于MVC的资源都在谈论Controller向视图发送数据?

我正在尝试使用类似MVC的模式编写应用程序.因此,在我的应用视图中,始终从模型中获取页面的数据.当Model更新时,我将特定的模型更新时间添加到Memcache.在运行时,每个View查找相关模型的上次更新时间,并生成此视图的上次缓存.如果在保存缓存之前更新了模型,则视图将读取缓存,否则将根据更新的模型重新渲染.

Bol*_*ock 13

控制器负责根据请求的数据显示视图.它就在那里,所以模型和视图都不需要知道请求.是的,视图从模型中获取数据,但并不总是直接; 控制器可能还必须根据请求做出一些决定.

这就像在餐馆里有服务员一样,他们可以接受订单并为客户提供菜肴.准备好后,不是厨师带出饭菜; 这是服务员.不是那些去厨房要求用餐的顾客; 是服务员接受他们的命令然后让厨师知道为谁做准备.以同样的方式,控制器可以处理客户端请求,无论其性质如何.虽然这是一个非常粗略的比较,但我希望你能得到它.

  • @SODA:不,马里奥在这个问题上不对.他只是喜欢发布有趣的链接.:]我想说的是:你不应该遵循任何特定的编码模式.这些都是假设的,定义是含水的,几乎没有人在书中做到这一点.网络上的"MVC"是一个流行语."MVP"是一个更好的方向,但您应该只编写最适合您的最有效和可读的结构.如果这有助于概述,请调用控制器"Controller",并使其组织大量输入数据,处理逻辑和是POST请求. (3认同)