Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MVC-Codeigniter-View与模型对话_Php_Codeigniter_Database Abstraction - Fatal编程技术网

Php MVC-Codeigniter-View与模型对话

Php MVC-Codeigniter-View与模型对话,php,codeigniter,database-abstraction,Php,Codeigniter,Database Abstraction,在我看到的关于MVC架构的StackOverflow的大多数帖子中,人们都说模型应该只从控制器进行通信,而不是从视图进行通信 我对此有点困惑,因为当你在谷歌上搜索MVC时: - - 这些图形似乎表明存在从视图直接到模型的通信 我想知道的具体应用程序是一个Ajax/jQuery分层选择框,如这里所示。每次选择之后,我都在考虑从模型中获取下一个框的数据。我正在使用Codeigniter框架 在了解了这里的最佳实践之后。当您有一个以XHR为中心的应用程序时,实际上有两个MVC三元组是有意义的。一个用于

在我看到的关于MVC架构的StackOverflow的大多数帖子中,人们都说模型应该只从控制器进行通信,而不是从视图进行通信

我对此有点困惑,因为当你在谷歌上搜索MVC时: - - 这些图形似乎表明存在从视图直接到模型的通信

我想知道的具体应用程序是一个Ajax/jQuery分层选择框,如这里所示。每次选择之后,我都在考虑从模型中获取下一个框的数据。我正在使用Codeigniter框架


在了解了这里的最佳实践之后。

当您有一个以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体系结构