1

亲爱的朋友们: 这似乎更像是一个概念问题而不是编程问题。我是 MVC 的新手,在理解什么可以调用什么方面存在问题。程序控制的流程。

问题:控制器 A --Calls-->Model A--calls-->View A。现在,一旦加载了 View A,它还包含一个用于插入带有 sumbitt 按钮的评论的表单。

一旦评论被插入(并提交),它就会调用 Controller B--calls-->Mocel B. 它将数据插入评论表中——而且它没有要调用的视图。

问题1:如何从模型B调用控制器A(因为模型B没有视图)。可以从 ModelB 加载 ViewA,但这需要重写 Controller a 中已经存在的代码。此外,我希望将评论表单插入到许多页面中,因此我必须手动重新加载所有这些页面(视图)。

问题 2:可以将评论表单(控制器 B 和模型 B)作为控制器 A 和模型 A 的一部分,但是评论表单将不再是可重复使用的模块,并且需要插入到我喜欢的每个页面中中使用。

问题3:我是否有一些概念上的错误。这是MCV的工作方式吗?

总结::有一个由Controller B和Modal B管理的表单(它没有视图,它显示为由控制器A,模型A和视图A管理的页面的一部分)模型B完成工作后需要调用控制器A(以便它可以刷新页面)如何?提前感谢您勇敢的灵魂

4

1 回答 1

0

我认为你的策略有点偏离开始

Controller A --Calls-->Model A--calls-->View A

你的模型真的不应该调用你的视图。控制器通常负责此操作。向控制器发出请求,控制器从模型中获取所有数据,然后使用视图对其进行格式化/模板化并将其输出给用户。控制器应该是每个请求的中心。

QUESTION 1 如何从 Model B 调用 Controller A?

Model B 真的不应该调用控制器。MVC 真的不是为此而设计的。如果您需要模型 B 的数据,请从控制器获取。如果您需要控制器 A 中存在的功能,请将其重构为可在应用程序中的任何位置使用的实用程序功能。

问题2:可以将评论表单(控制器B和模型B)作为控制器A的一部分吗?

是的,这再次来自一个好的应用程序设计。我想您的模型之一能够检索评论。也许每个用户也许每个时间框架。您可以从控制器 A 调用该模型函数。通过加载模型$this->load->model('Post') 并撤消您的帖子$this->Post->most_recent_posts()

问题3:我是否有一些概念上的错误。这是MCV的工作方式吗?

是的,您网站的功能与其控制器和模型的绑定过于紧密。它们必须更松散/通用,因此可以在任何控制器中使用功能。

我想回答你最后/主要的一点,但看到一些代码真的很有帮助。

于 2012-06-28T21:39:58.463 回答