ZF2,具有多个if-elseifs的控制器上的策略设计模式

时间:2016-04-02 15:10:22

标签: php zend-framework

在ZF2中,我有控制器工厂来实例化控制器。控制器显示和处理6个表单。表单共享提交按钮的相同name,但具有不同的提交value

根据表单提交按钮的值,使用多个indexAction()在控制器if-elseif中处理表单。

我想摆脱if-elseif。我想我需要在控制器的工厂类上使用策略设计模式。问题是我不知何故需要将提交按钮的值传递给控制器​​工厂。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

将此传递给控制器​​的方法是use Zend\Http\Request;。使用请求对象,您可以获得发布的值。

BUT!挖掘后,找到2个资源:

  1. http://zend-framework-community.634137.n4.nabble.com/ZF2-Injecting-objects-to-a-controller-or-getting-objects-from-the-service-locator-td4656872.html。 @weierophinney(Zend框架的主要贡献者之一)提出了一些指导原则:
  2.   

    我的经验法则是:控制器中有超过5-7个动作:   重构。超过1-2种形式:重构。否则,工作流程了   控制器变得太难以轻易跟随。

    如果您在控制器中的操作使用相同的表单,则可以设置setValidationGroup()并根据操作验证表单的不同部分。

    因此,对于我的情况,我想,我需要重构控制器以分离表单。

    1. http://zend-framework-community.634137.n4.nabble.com/zf2-widget-base-app-logic-td4657457.html。 @weierophinney建议在表单中使用视图助手。