2016-04-02 22 views
0

在ZF2中,我有控制器工廠實例化控制器。控制器顯示並處理6種表格。表單共享提交按鈕的相同name,但具有不同的提交value s。ZF2,具有多個if-elseifs的控制器上的策略設計模式

表單根據表單的提交按鈕的值使用多個if-elseif s在控制器indexAction()中得到處理。我想脫掉if-elseif s。我想我需要在控制器的工廠類上使用策略設計模式。問題是我不知何故需要將提交按鈕的值傳遞給控制器​​工廠。

我該怎麼做?

回答

0

將此傳遞給控制器​​的方法是use Zend\Http\Request;。通過請求對象,您可以獲取發佈的值。

但是!挖掘後找到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 Framework的一個)提出了幾個原則:

拇指我的原則是:超過5-7行動控制器: 重構。超過1-2種形式:重構。否則,控制器的工作流程變得難以輕易跟隨。

如果控制器的操作使用相同的形式,可以設置setValidationGroup()以及與此驗證取決於動作形式的不同部分。

因此,對於我的情況,我想我需要重構控制器來分離出窗體。

  1. http://zend-framework-community.634137.n4.nabble.com/zf2-widget-base-app-logic-td4657457.html。這裏@weierophinney建議使用視圖助手來獲取表單。