dsdzvprlp51692469 2016-04-02 15:10
浏览 128
已采纳

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

In ZF2, I have the controller factory that instantiates the controller. The controller displays and processes 6 forms. The forms share the same name of the submit button, but have different submit values.

The forms get processed in the controllers indexAction() using multiple if-elseifs based on the value of the form's submit button.

I'd like to get rid of if-elseifs. I guess I need to use the strategy design pattern on the controller's factory class. Problem is that I somehow need to pass the value of the submit button into the controller factory.

How can I do this?

  • 写回答

1条回答 默认 最新

  • doufu1950 2016-04-04 06:26
    关注

    The way to pass this into the controller is to use Zend\Http\Request;. With the request object you can then get the posted value.

    BUT! After digging, found 2 resources:

    1. http://zend-framework-community.634137.n4.nabble.com/ZF2-Injecting-objects-to-a-controller-or-getting-objects-from-the-service-locator-td4656872.html. Here @weierophinney (one of the main contributors to the Zend framework) suggests a couple of guidelines:

    The rule of thumb I have is: more than 5-7 actions in a controller: refactor. More than 1-2 forms: refactor. Otherwise, the workflow of the controller becomes too difficult to follow easily.

    If your actions in the controller use the same form, you can set setValidationGroup() and with this validate different parts of the form depending on the action.

    So for my case, I guess, I need to refactor the controller to separate out the forms.

    1. http://zend-framework-community.634137.n4.nabble.com/zf2-widget-base-app-logic-td4657457.html. Here @weierophinney suggests using view helpers for the forms.
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 懂Matlab的人,可以帮我看看第四题和第五题应该怎么才能运行出来,或者可以提供一点相关的思路
  • ¥15 cv2.fisheye.stereoCalibrate报错
  • ¥20 求自动化运维语料数据集
  • ¥30 广告检测流量作弊案例 IDEA运行代码报错 连接不上metastore 检测了环境配置没有问题 请求远程解决加VX问细节问题 不加的不回复
  • ¥15 matlab图像融合代码被嫌弃太简单,求改进。第一步改成直接读取三张图片,不读取文件夹
  • ¥20 微处理器原理与应用(私有偿)
  • ¥50 8051单片机关于ADC0809的应用
  • ¥15 有没有能拿来练练手写完发给我
  • ¥15 禁止修改windows系统时间
  • ¥50 kinect连接win11笔电导致音视频设备消失