如何避免在CodeIgniter中膨胀控制器代码?

时间:2011-11-24 18:50:43

标签: php model-view-controller codeigniter coding-style controllers

控制器以MVC模式存在以处理用户输入和输出。因此,输入验证和响应准备应该在控制器中完成。

例如,我有一个控制器方法“保存”:

  • 查找输入数据
  • 在数据上运行验证器
  • 如果输入有效,则加载适当的模型,将其字段设置为输入值,并调用其save()方法
  • 如果输入无效,请准备数据以重新加载编辑表单,显示表单

所有这些序列都会造成相当混乱的线性代码。我想以某种方式将它分开。我是否将验证部件移动到模型中?听起来不对?我是否创建了一个特殊的“库”类来处理输入?

在Asp.Net MVC中,这会更好,因为他们已经实现了“对象绑定”模式。因此,验证和模型字段绑定消失,控制器变得更轻。 CodeIgniter有类似的东西吗?

2 个答案:

答案 0 :(得分:2)

控制器进行验证并不被广泛接受,我在模型中按照“让你的模型变胖,控制器变薄,观看愚蠢”这样做。

这取决于业务逻辑什么是有效的电话号码等等,所以我只有在模型中才有意义。

答案 1 :(得分:1)

我会完全按照您的意愿行事,并尽可能多地将逻辑放入您的模型中。控制器确实应该用于启动服务和为视图准备数据。

你应该重复使用代码,即验证器,过滤器等。