【问题标题】:Struggling to understand MVC in context on my Website code努力在我的网站代码中理解 MVC
【发布时间】:2018-05-08 06:51:10
【问题描述】:

我在理解如何在我的注册系统上下文中使用模型视图控制器时遇到问题。据我了解,视图已加载,向用户显示我的注册 html 表单。一旦用户点击提交,我就有一个 javascript 注册类,它使用 ajax 来处理用户输入的数据的 POST。我的主要 index.php 文件有通常的

if(isset($_POST['action'])) {
    if($_POST['action'] == "register") {
        // send the data to the model
    }
}

模型将处理所有与数据库相关的注册逻辑,并返回一条消息,指示成功或失败。此消息由我的注册 javascript 类中的 ajax 捕获,它更新一些视图 HTML 以告诉用户注册是成功还是失败(有效的电子邮件等)。

我的主要问题是为什么我的视图需要参考模型,就像我看到的每个示例一样。以及上面注册系统的哪一部分是控制器应该处理的。

【问题讨论】:

  • 这很模糊。通常,view 需要引用 model 来呈现自身。
  • 控制器跟踪什么模型与什么视图一起工作。视图不应直接与模型通信。此逻辑应位于控制器中。当模型返回一些数据(在您的情况下是成功或错误消息)时,控制器会检查注册到此的视图,并更改视图。
  • MVC 并没有真正考虑到网络,因此它在网站上的任何应用都是主观的(因此您的问题没有明确的答案)。由于这个原因,我最初发现很难理解它。我发现学习 MVP 更有用,它更接近人们在将 MVC 应用于网站应用程序时使用的内容。我对它的使用是 Presenter only 管理模型,然后加载适当的视图。视图是 HTML、XML 等。其他所有内容(例如引导程序和路由器)都不是 M、V 或 P,我将其称为“应用程序”。

标签: javascript php ajax html model-view-controller


【解决方案1】:

MVC 中的控制器处理用户输入。他们负责获取用户传递的信息,并将其应用于模型层,以更改模型层的状态(通常通过与各种服务交互)。

至于模型,说“处理所有与数据库相关的注册逻辑”其实是完全错误的。数据访问层只是领域业务模型的一小部分(由于我比较懒,阅读更多here)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多