关于MVC设计的建议,在控制器中生成视图

时间:2014-09-27 17:48:39

标签: php codeigniter-2

我正在使用PHP Codeigniter atm。我读过一些强调" Fat Model和Thin Controller"并且该模型应该处理所有业务逻辑,具有直接处理数据库和控制器的方法直接处理用户输入。遵循这些规则,似乎有必要通过控制器间接地将$ _POST数组数据传递给模型。但有时它更直接,几乎是直接在控制器中处理用户数据所必需的

此外,CI的form_validation类不允许您在配置文件的form_validation.php中设置自定义错误消息。为此,我们需要编写call_back方法。但是如果我们要为每个字段编写call_back方法,控制器就会变得“胖”。还有为什么我会首先使用form_validation类。

另一件事是,我经常发现需要根据数据库和用户输入等生成内容。但是在控制器中这样做似乎违背了逻辑和表示的分离" 。例如,CI有一个表单和表格助手,分页等......这些都是演示文稿的东西。在控制器中写入这些将使控制器再次变胖。所以我想我应该为视图生成编写控制器方法,还是应该编写模型或库来处理演示文稿?

我很欣赏一些关于一般MVC方法的好建议和提示。谢谢。

1 个答案:

答案 0 :(得分:1)

你可以看看它是如何在CakePHP中完成的,它们试图更接近MVC架构。

  

但有时它更直接,几乎是直接在控制器中处理用户数据所必需的

你几乎不想这样做。当控制器只调用一堆模型方法时,事情会变得更加清晰。这鼓励代码重用,因为您可以轻松地在另一个控制器中引用相同的模型方法。

  

为此,我们需要编写call_back方法。但是如果我们要为每个字段编写call_back方法,控制器就会变得“胖”。还有为什么我会首先使用form_validation类。

对于表单验证,模型具有validate属性,其中包含要验证的字段数组,并且所有模型上都有一个通用的validates方法,用于根据模型检查保存的数据。 validate财产。然后它可以使'无效。数据中的单个字段,并将其传递回视图,该视图在字段上显示错误。

  

所以我想我应该编写用于视图生成的控制器方法,还是应该编写模型或库来处理演示文稿?

写一个Helper类。 Helper类被视为视图之间的共享代码,而不是控制器的一部分。