【问题标题】:How the view communicate with controller in MVC?视图如何与 MVC 中的控制器通信?
【发布时间】:2014-09-19 11:37:33
【问题描述】:

我正在尝试在没有框架的情况下理解和使用MVC,直到现在我清楚地了解ModelView的作用是什么和控制器以及它们是如何制作的。

但我有一个问题。如果 Controller 是一个类,为 w View 中的每个操作提供方法,并且在该方法中,我们与 Model 通信并询问一些数据或发送一些数据,然后将这些数据发送到我们选择显示的视图。我的问题是,当我们需要将一些数据从视图发送到控制器时,我们如何从视图中调用该方法?

假设我们有一个包含所有用户的页面,当我们点击一​​个用户时,我们想要关于他的信息,我们通过 post 或 get 发送他的 id,我们有一个带有 GetUserInformation 方法的 UserController 与模型通信发送 id 接收信息将其设置为视图并调用 view() 以显示信息。

当客户端点击该用户时,我们如何从View调用这个方法?

我们在它们之间创建了另一个文件并将用户发送到该文件,在该文件中我们实例化一个控制器对象并调用该方法?但是如果我们这样做,该文件是如何在 MVC 中调用的?

当我们需要从控制器调用方法并发送一些数据或只调用它而不发送数据时,还有很多示例,例如登录,添加用户等。

一般的想法是我们如何从 Controller 对象在 html 页面中的操作上调用方法?

【问题讨论】:

  • 您是否知道您的“帖子”是一堵巨大的文字墙,其中包含最多 5 行的句子。
  • 你是对的...@tereško 刚刚在 4 小时前修复了这个问题...

标签: model-view-controller view controller


【解决方案1】:

由于您有多个 php 帖子,我假设您指的是在 Web 应用程序的上下文中实现 MVC 或受 MVC 启发的架构。

首先:控制器不负责将数据从模型层(不是“模型类”)传递到当前视图。 MVC 中的控制器仅负责根据用户的输入改变模型层的状态(在极少数情况下 - 当前视图的状态)。

您必须了解的第二件事是 php 的请求-响应性质。您的应用程序中的实例不会在站点代码执行之后继续存在。

对于视图,它的任务是创建一个响应,然后发送给用户。 您的网络应用程序的“用户”不是人类。实际上得到响应的是浏览器。并且浏览器没有获得“视图”。它只接收视图产生的响应。

因此:

在正确实现的基于 MVC 的 Web 应用程序中,视图不可能调用控制器上的方法,因为:

  • 您不是与视图交互,而是与响应交互
  • 视图和控制器都已销毁

PS:一开始你写的“到现在我都清楚地了解了model、view和controller的作用以及它们是如何制作的”,但这显然是不真实的。

【讨论】:

  • 现在我觉得我什么都不懂了:)) 我几天前才开始检查 MVC 并查看了很多网站和示例,他们都说同样的事情控制器与模型和视图进行通信,在它们之间建立联系,我想你是在试图向我解释抽象的东西,我刚开始使用网络应用程序,我才两个月前开始,我独自从互联网上学习,你不能找出后面发生的所有事情和事情的本质,事情是笼统地解释的,他们只说基本的东西。
  • 能否请您尝试在低级别向我解释或指出一些资源,我可以在其中理解许多人不关心或不说的所有重要的基本内容?我真的想以正确的方式学习东西并理解后面的所有过程,因为在互联网上,东西都是机械解释的,它们看起来很容易,但我发现它不是这样的。
  • 这些只是我在网上查看 MVC 时发现的几个网站以及我从中学习的地方,你可以在那里看到为什么我会这样理解,因为它们都说同样的话,并且都是同样,他们只是笼统地说,并没有涵盖所有事情,不要说真实的事情他们都专注于我所说的事情,这就是为什么它看起来如此简单code.tutsplus.com/tutorials/mvc-for-noobs--net-10488salopek.eu/content/28/create-a-simple-php-mvc-frameworkblog.oscarliang.net/simple-mvc-framework-tutorial-part-1@ 987654324@
  • 至于学习资料,我一般只会指点人this list of material(因为我比较懒)。另外,也许this old post 会有所帮助。
猜你喜欢
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 2012-02-02
  • 1970-01-01
  • 2021-04-15
  • 2012-01-22
相关资源
最近更新 更多