Php MVC-Codeigniter-View与模型对话
在我看到的关于MVC架构的StackOverflow的大多数帖子中,人们都说模型应该只从控制器进行通信,而不是从视图进行通信 我对此有点困惑,因为当你在谷歌上搜索MVC时: - - 这些图形似乎表明存在从视图直接到模型的通信 我想知道的具体应用程序是一个Ajax/jQuery分层选择框,如这里所示。每次选择之后,我都在考虑从模型中获取下一个框的数据。我正在使用Codeigniter框架Php MVC-Codeigniter-View与模型对话,php,codeigniter,database-abstraction,Php,Codeigniter,Database Abstraction,在我看到的关于MVC架构的StackOverflow的大多数帖子中,人们都说模型应该只从控制器进行通信,而不是从视图进行通信 我对此有点困惑,因为当你在谷歌上搜索MVC时: - - 这些图形似乎表明存在从视图直接到模型的通信 我想知道的具体应用程序是一个Ajax/jQuery分层选择框,如这里所示。每次选择之后,我都在考虑从模型中获取下一个框的数据。我正在使用Codeigniter框架 在了解了这里的最佳实践之后。当您有一个以XHR为中心的应用程序时,实际上有两个MVC三元组是有意义的。一个用于
在了解了这里的最佳实践之后。当您有一个以XHR为中心的应用程序时,实际上有两个MVC三元组是有意义的。一个用于前端,一个用于后端。前端将后端MVC视为数据源(与后端模型层中的数据抽象结构处理数据库、缓存和其他形式的存储的方式相同) 基本上,您的“ajax应用程序”不是视图。它应该是一个完全实现的应用程序。当然,如果您实际上正在创建一个支持XHR的大型应用程序,那么这样做是有意义的 通常,您在浏览器中看到的不是视图。这只是视图创建的响应。在web环境中,MVC应用程序的用户是web浏览器
资料来源: 上图显示了和Model2 MVC(也称为“Web MVC”)中的简化信息流。它们之间的区别来自web的本质:每次用户发送输入时,它都希望收到响应。这意味着在时间上没有含糊不清的地方。MVC triad的所有部分仅在发送响应之前存在。没有观察模型层的视图 web应用程序中的视图实际上就是实例,它包含所有UI逻辑,并负责将响应发送到浏览器。它创建的响应可以是HTML(通过组合多个模板)、JSON或XML文件。或者可能只是HTTP位置头 p.S.你可能会发现这与你的学习相关
我认为第二个链接上的图像是错误的,因为正确的方法应该是控制器与模型通信。如果视图与模型直接通信,则意味着html代码与php arge语句混合在一起,这是一个错误。有关MVCI的演变和不同含义的讨论,请参阅。我仍然会亲自调用控制器函数来返回数据。我想,您使用的是MVP来实现该模式,您需要一个功能齐全的视图。在codeigniter中,您只有哑模板,这些模板被称为“视图”。这可能不是您要寻找的确切答案,但它将以某种方式帮助您理解mvc体系结构