我应该合并我的创建和更新控制器吗?

时间:2010-11-27 20:03:12

标签: php model-view-controller codeigniter design-patterns controller

我用于更新和创建对象的控制器非常相似 - 它们都执行相同的表单验证和重定向。但他们当然会在模型中调用不同的方法。我应该合并它们还是将它们分开?或者我应该为验证做一个单独的帮助函数?

优点:

  • 一个控制器而不是两个
  • 没有重复的验证码
  • 视图(我合并了)总是可以指向同一个控制器

缺点:

  • 合并的控制器比较混乱 - 有几个地方我必须检查它是更新还是创建。

6 个答案:

答案 0 :(得分:2)

我几乎总是将它们合并。相同的验证,相同的前端页面指针等。您需要做一些检查,但我认为它们超过了缺点。

当需要添加字段或修改处理程序的某些逻辑时,这样做会容易得多。

答案 1 :(得分:0)

如何创建一个验证方法,该方法传递一个表示模式(添加或更新)的变量,并在验证后调用相应的控制器?

答案 2 :(得分:0)

我不会合并两个控制器(我喜欢在那里有一些统一性),DRY(它确实很重要)并且保持控制器方法的瘦,我宁愿创建一个公共验证方法。

答案 3 :(得分:0)

更新和插入是两回事。

Update将返回受影响的行数,insert将返回该插入的id。这很重要,因为你应该在返回控制器功能之前检查更新或插件是否实际发生。

我应该补充一点,验证不会受到影响。无论插入还是更新,都可以调用验证函数。如果验证失败,则重新显示表单。如果成功,则进行更新或插入。

答案 4 :(得分:0)

我不会有不同的控制器,只有同一控制器中的不同方法。

控制器将是“blog.php”,然后更新是一种方法,插入是另一种方法。

例如:

blog/add
blog/update/1

这样您就可以在控制器属性中设置验证并只使用一次。

如果你创建一个基于post或从db中提取的$ data ['blog']数组,你甚至可以使用相同的表单。这可能是一个太过分的步骤,但在某些情况下它是有道理的。

答案 5 :(得分:0)

添加和更新是同一控制器的不同方法。虽然我很喜欢保持轻巧聪明的代码,但在一天结束时,混合东西比解决方案更麻烦。

我认为这取决于您提交的表单的复杂程度。例如,当你必须验证图像替换时,它可能会很痛苦。

MVC是关于保持小而简单的,对吗?为什么要混淆它?