【问题标题】:MVC - Codeigniter - View talking to the modelMVC - Codeigniter - 视图与模型对话
【发布时间】:2012-10-21 12:21:35
【问题描述】:

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

我对此有点困惑,因为当您使用 Google MVC 时: -http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller -http://i.msdn.microsoft.com/dynimg/IC108622.gif 图形似乎表明存在从视图直接到模型的通信。

我想知道的具体应用是一个 Ajax/jQuery 分层选择框,就像这里的 http://kotowicz.net/jquery-option-tree/demo/demo.html 一样。每次选择后,我都在考虑从模型中获取下一个框的数据。我正在使用 Codeigniter 框架。

在对这里的最佳实践进行了一些专业知识之后。

【问题讨论】:

  • 参见martinfowler.com/eaaDev/uiArchs.html,了解 MVC 的演变和不同含义
  • 我还是会亲自调用一个控制器函数来返回数据。
  • 您认为,您使用的将是 MVP,要实现该模式,您需要一个功能齐全的视图。在 codeigniter 中,你只有哑模板,它们被称为“视图”。
  • 这可能不是您正在寻找的确切答案,但它会以某种方式帮助您了解 mvc 架构programmers.stackexchange.com/questions/140406/…

标签: php codeigniter database-abstraction


【解决方案1】:

当您有一个以 XHR 为中心的应用程序时,实际上有两个 MVC 三元组是有意义的。一个用于前端,一个用于后端。前端会将后端 MVC 仅视为数据源(与后端模型层中的数据抽象结构处理数据库、缓存和其他形式的存储的方式相同)。

基本上,您的“ajax 应用程序”不是view。它应该是一个完全实现的应用程序。当然,如果您实际上是在创建一个大型 XHR 驱动的应用程序,那么这样做是有意义的。

通常,您在浏览器中看到的不是视图。这只是视图创建的响应。在网络环境中,MVC 应用程序的用户是网络浏览器


来源:wikipedia

上图表示classical MVC 和 Model2 MVC(也称为“Web MVC”)中的简化信息流。它们之间的区别来自网络的本质:每次用户发送输入时,它都希望收到响应。这意味着时间上没有歧义。 MVC 三元组的所有部分仅在发送响应之前存在。模型层没有观察点。

Web 应用程序中的视图实际上是实例,它包含所有 UI 逻辑并负责将响应发送到浏览器。它创建的响应可以是 HTML(由多个模板组合而成)、JSON 或 XML 文件。或者可能只是 HTTP 位置标头。

P.S.您可能会发现 this answer 与您的学习相关。

【讨论】:

    【解决方案2】:

    我认为第二个链接上的图像是错误的,因为正确的方法应该是控制器与模型的通信。如果视图与模型直接通信,则表示html代码与php大语句混合,这是错误的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多