【问题标题】:Should I merge my create and update controllers?我应该合并我的创建和更新控制器吗?
【发布时间】:2010-11-27 20:03:11
【问题描述】:

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

优点:

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

缺点:

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

【问题讨论】:

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


    【解决方案1】:

    我几乎总是合并它们。相同的验证,相同的前端页面指针等。您必须进行一些检查,但我认为它们大于缺点。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我不会合并两个控制器(我希望那里有一些统一性),为了保持 DRY(这确实很重要)并保持控制器的方法精简,我宁愿创建一个用于通用验证的方法。

        【讨论】:

          【解决方案4】:

          更新和插入是两个不同的东西。

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

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

          【讨论】:

            【解决方案5】:

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

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

            例如:

            blog/add
            blog/update/1
            

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

            如果您基于帖子创建一个 $data['blog'] 数组或从数据库中提取,您甚至可以使用相同的表单。这可能有点过头了,但在某些情况下是有意义的。

            【讨论】:

              【解决方案6】:

              Add 和 Update 是同一个控制器的不同方法。尽管我非常喜欢保持轻巧而聪明的代码,但归根结底,混合内容比解决方案更麻烦。

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

              MVC 是为了让事情变得小而简单,对吧?为什么要混在一起?

              【讨论】:

                猜你喜欢
                • 2012-04-29
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-12-07
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-12-19
                相关资源
                最近更新 更多