2016-04-02 10 views
0

In ZF2 habe ich die Controller-Fabrik, die den Controller instanziiert. Der Controller zeigt und verarbeitet 6 Formulare. Die Formulare teilen sich die gleiche name der Schaltfläche senden, aber unterschiedliche senden value s.ZF2, Strategie Entwurfsmuster auf Controller mit mehreren if-elsifs

Die Formulare werden in den Controllern indexAction() mit mehreren if-elseif s basierend auf dem Wert der Schaltfläche zum Senden des Formulars verarbeitet.

Ich möchte von if-elseif s loszuwerden. Ich denke, ich muss das Strategieentwurfsmuster in der Fabrikklasse des Controllers verwenden. Das Problem ist, dass ich irgendwie den Wert des Senden-Buttons in die Controller-Fabrik übergeben muss.

Wie kann ich das tun?

Antwort

0

Der Weg, um dies in die Steuerung zu übergeben ist, um use Zend\Http\Request;. Mit dem Anfrageobjekt können Sie dann den gebuchten Wert erhalten.

ABER! Nach dem Graben, gefunden 2 Quellen:

  1. http://zend-framework-community.634137.n4.nabble.com/ZF2-Injecting-objects-to-a-controller-or-getting-objects-from-the-service-locator-td4656872.html. Hier @weierophinney (eine der Hauptursachen für das Zend Framework) schlägt vor, ein paar Richtlinien:

Als Faustregel ich habe, ist: mehr als 5-7 Aktionen in einem Controller: refactor. Mehr als 1-2 Formulare: Refactor. Andernfalls wird der Ablauf des Controllers zu schwierig, um leicht zu folgen.

Wenn Ihre Aktionen in der Steuerung die gleiche Form verwenden, können Sie setValidationGroup() gesetzt und damit die verschiedenen Teile der Form auf der Aktion in Abhängigkeit validieren.

Also für meinen Fall, ich denke, ich brauche den Controller Refactoring die Formen zu trennen.

  1. http://zend-framework-community.634137.n4.nabble.com/zf2-widget-base-app-logic-td4657457.html. Hier schlägt @weierophinney vor, View-Helfer für die Formulare zu verwenden.
Verwandte Themen