如果控制器只能访问视图(下图中的图#2)并且视图可以访问模型,为什么MVC不能正常工作?
在大多数网站上(包括Stack Overflow上的一些主题),我已经读过它应该如左图所示(图中的#1图)。
我添加了一张图片,以便您可以更好地理解我的问题(不要介意这是一个UML图表,只需将其视为常规图表)。
注意:当然,模型可以访问的是dataMapper
,而init
上方有frontController
和controller
等等。但我没有&#39} ; t将它们添加到图像中以使其尽可能简单。
答案 0 :(得分:3)
如果仅仅是显示数据,那么原理图应该是控制器调用视图,视图从模型中获取数据以显示其状态。
但是,控制器通常会在模型状态下触发更改。例如。用户要求登录,发布新条目,删除旧条目或由传入请求触发的任何其他类型的更改。控制器将这些“写入请求”传播到适当的模型方法,并根据结果决定应该做什么。视图是“只读”,处理此类事情不是它的工作。