如果视图是从控制器提供的,那么可以通过post传递在该视图中生成的数据并将其直接传递给模型,或者是否需要通过控制器返回提供视图并从控制器调用模型?MVC混淆通过控制器将数据从视图传递到模型
回答
在MVC不可知论的方法中,我会说回到模型的视图是correct approach。纯粹主义者可能会说总是回到控制器。
从here ...注释
模型管理的行为和应用领域的 数据, 响应有关其状态(通常是从 视图)的信息 请求和响应通过 更改状态(通常来自 控制器)。
短语“通常”是关键。模式在一定程度上用于可管理性和可维护性。有时模式是以可维护和可管理的方式完成目标的障碍,有时会被过度使用。
我会认识到,在这种情况下(小规模),任何一条路线都可以正常工作......但它也是关于如何在广泛的应用中解决问题。
在CodeIgniter视图中从控制器获取它们的数据,该控制器解复用/验证参数并从模型中检索合适的数据。重要的是:
视图被输出。视图不直接与模型耦合,因为它们定义了HTML/XML/JSON/CSS(页面,页面的逻辑部分或输出数据的其他片段,如API和资源)。这意味着你不要从CI中的视图调用模型。
控制器是代理。控制器和模型不产生输出。控制器接受GET和POST请求并为视图打印结果所需的调用,通常检查参数并复用多个模型调用以获取所有适当的数据。
模型获取和放入数据。模型应以不可知的格式返回其数据:作为模型的数据对象,或更一般(但一致)的数据散列。返回的模型数据越清晰,您将在视图和模型之间发现的耦合越少(并且您将能够重复使用模型片段的次数越多)。
CI中有几个地方,你可能会发现重叠:
- 的JavaScript往往结束了相关的意见(和可能做这样的事情的验证,通常的控制任务)。您可以通过将Javascript移出视图来改善这种情况(适用于较大的部分,对于较小的部分不太适用)。
- 在PHP中,返回哈希(键/值数组)比返回对象(代码少,但是类型安全性降低)更容易。这通常是耦合的来源。
- 共享输出的东西通常会进入控制器(您可以通过将它移动到CI帮助程序库中避免这种情况)。
目标是让您的视图不知道您的模型,只是它们从它们接收符合特定规范的数据。控制器只是获取和放置(它们既不生成HTML输出,也不直接访问数据),模型主要是SQL或其他形式的获取数据并将其填充到结构化的东西中。
是的,您将表单数据提交给控制器功能。该函数然后处理数据并调用视图。
如果您尝试任何其他方式,您将以代码地狱结束。
一个函数可以处理表单的原始显示和表单的提交。
只需检查表单是否已提交,如果是,处理它的数据,否则显示表单。
function login(){
if($this->input->post('submitted')==1){
//process the form data
}else{
//show the form
}
}
- 1. MVC从模型通过控制器传递对象到视图
- 2. 试图将模型数据从视图传递到控制器
- 3. 将模型数据从视图传递到控制器
- 4. MVC3(Razor)将模型数据从视图传递到控制器
- 5. ASP.NET MVC,将模型从视图传递到控制器
- 6. 通过ajax将数据从视图传递到控制器
- 7. 将数据从控制器传递到控制器到模型
- 8. 将数据从MVC模型传递到角度控制器
- 9. MVC - 需要将数据从视图传递到控制器
- 10. 在MVC中将数据从视图传递到控制器spring
- 11. MVC - 如何将数据从视图传递到控制器
- 12. MVC - 将数据从视图传递到控制器
- 13. ASP.NET MVC 3 Razor:将数据从视图传递到控制器
- 14. 将模型对象数据从视图,控制器传递到模型?
- 15. 将数据传递给控制器通过Ajax从视图
- 16. 将数据从控制器传递到javascript(绕过视图)
- 17. MVC 4使用从视图传递到控制器的数据创建模型
- 18. 从数据传递到控制器从视图与C#/ Razor MVC
- 19. 从控制器传递数据到模型类mvc-5
- 20. 将模型从视图传递到控制器
- 21. 将模型从视图传递到控制器的问题
- 22. 无法将模型从视图传递到控制器。
- 23. 将模型阵列从视图传递到控制器
- 24. 将模型从视图传递到控制器与html.actionlink
- 25. MVC4将模型从视图传递到控制器
- 26. 将NG模型从视图传递到控制器角度js
- 27. 将数据从视图控制器传递到另一个视图控制器
- 28. 将数据从表格视图控制器传递到视图控制器
- 29. ASP .NET MVC 3 - 将参数从视图传递到控制器
- 30. MVC 3 - 将两个参数从视图传递到控制器
所以我会从视图调用模型? – roger 2010-11-30 21:35:58