ZF2: Wie übergebe ich Parameter zum Weiterleiten von Plugins, die ich dann in der Methode bekomme, an die ich sie weiterleite?

7

Ich habe eine Aktionsmethode in Foo Controller, die Parameter benötigt:

%Vor%

Und ich muss diese Methode von der anderen Methode eines Boo Controllers weiterleiten. Und einer dieser Parameter muss nach Referenzparameter sein. Das einzige Beispiel, das das Handbuch hat, ist dies:

%Vor%

Keine zusätzlichen Parameter. Aber sie schreiben:

  

$ params ist ein optionales Array von Parametern, mit denen man a sehen kann   RouteMatch-Objekt für die Zwecke dieser spezifischen Anfrage.

Also, ich habe es versucht:

%Vor%

Aber es funktioniert nicht.

Gibt es eine Möglichkeit, zusätzliche Parameter an den Controller weiterzuleiten?

UPD:

Diese funktionieren auch nicht:

%Vor%

UPD 2:

Ich kann immer noch nicht die gewünschte Funktionalität bekommen (um Parameter mit dem forward Plugin zu übergeben), aber ich habe andere Lösungen gefunden. Bevor ich das forward Plugin anrufe, setze ich die Variablen auf das Request Objekt und nach dem forward bekomme ich sie von der Request in meiner boo Aktion meines Boo \ Controllers \ BooController :

%Vor%

Dumme Lösung, es wird nicht mit Ajax-Anfragen funktionieren. Immer noch interessiert, wie Parameter mit dem Forward-Plugin übergeben werden. ODER VIELLEICHT, wie man sie in booAction bekommt. Da gibt es in der Request gar nichts, wenn ich sie mit dem forward übergebe.

UPD 3 und Finale:

Ich habe endlich gefunden, wo sie entschieden haben, Parameter zu verstecken, die ich mit dem forward -Plugin übergebe. Sie legen sie in das Objekt RouteMatch .

- Versuchen Sie zu raten, wo wir Ihre Params versteckt haben ... Oh yeeah, sie sind in der RouteMatch , natürlich sind sie da, haben Sie nicht anders gedacht?

Und keine Informationen im forward Plugin-Abschnitt des Handbuchs!

Um Params zu bekommen, muss ich das in meinem BooController::booAction :

machen %Vor%     
Green 07.12.2012, 15:27
quelle

5 Antworten

6

Sie können eine Container-Klasse erstellen und sie in beiden Controllern verwenden

in der module.conf

%Vor%

Erzeuge einen Getter in beiden Controllern:

%Vor%

Und rufe es mit:

%Vor%

ZF2 Möglichkeit, vars mit vorwärts zu übergeben

Bei der Übergabemethode:

%Vor%

In der aufgerufenen Controller-Methode:

%Vor%     
michaelbn 08.12.2012, 10:35
quelle
10

Warum nicht das params Plugin benutzen?

Das funktioniert für mich:

%Vor%     
sumeragi 07.12.2013 19:27
quelle
2

Ich dachte, ich würde eine andere Option hinzufügen, die für mich funktioniert.

Sie können die Parameter einfach direkt durch die Funktion forward übergeben und mit der Funktion routeMatch auf das andere Ende zugreifen.

%Vor%

Übergibt an Foo Controller, basAction Bei dieser Methode können Sie dann den folgenden Code verwenden, um auf den ID-Parameter

zuzugreifen %Vor%

Nicht sicher, ob dies Ihren Anforderungen entspricht - aber funktioniert für mich.

    
Greg.Forbes 05.02.2014 21:51
quelle
1

Danke für die Frage, hat mir sehr geholfen. Gefunden einen einfachen Weg, um alle Params weitergeleitet zu bekommen () - & gt; Versand (...). In der Aktionsmethode des Controllers:

%Vor%

gibt das Array $ data als übergebenes $ data in forward () - & gt; dispatch ($ controllerName, $ data) zurück.

    
Oliver Konig 16.12.2013 19:11
quelle
1

Hier in der offiziellen ZF2-Dokumentation genau geschrieben wie es funktioniert:

$params ist ein optionales Array von Parametern, mit denen ein RouteMatch-Objekt für die Zwecke dieser spezifischen Anfrage erstellt wird. Das bedeutet, dass die Parameter mit ihrem Schlüssel zu den Routing-IDs in der Konfiguration übereinstimmen (andernfalls werden nicht übereinstimmende Schlüssel ignoriert) .

Also pass so:

%Vor%

Und dann kannst du deine route match params in deinem My\Controller normal bekommen:

%Vor%

Für Leute, die mit dem Zugriff auf Parameter in ihrem Controller zu kämpfen haben, hier eine schöne Übersicht von diesem CheatSheet .

%Vor%     
Wilt 17.04.2015 08:04
quelle