Geben Sie die Daten aus der Ereignisbeobachtung in Magento zurück an den Dispatcher

8

Ich habe eine Erweiterung für die Produktregistrierung, die ein Ereignis nach dem Speichern der Registrierung auslöst. Eine andere Erweiterung verwendet dieses Ereignis, um einen Gutschein für ein virtuelles Produkt zu generieren, wenn es sich auf das registrierte Produkt bezieht.

Ich muss Daten über den generierten Coupon abrufen, um sie zusammen mit den Details ihrer Produktregistrierung an den Nutzer zu senden.

Gibt es eine Möglichkeit, Daten vom Beobachter an den Ort zurückzugeben, an dem das Ereignis ausgelöst wurde?

    
Ryan 07.11.2012, 19:52
quelle

2 Antworten

24

Es gibt einen Trick in Magento für Ihren Zweck. Da Sie Ereignisdaten wie Produkt oder Kategoriemodell an die Beobachter übergeben können, ist es auch möglich, einen Container zu erstellen, aus dem Sie diese Daten abrufen können.

Solche Aktionen können beispielsweise im Dispatcher ausgeführt werden:

%Vor%

Und eine Beobachtermethode kann wie folgt aussehen:

%Vor%

Genießen und Spaß haben!

    
Ivan Chepurnyi 07.11.2012, 20:18
quelle
3

Nein, dafür ist nichts im System integriert. Die Magento-Konvention erstellt ein stdClass oder Varien_Object -Transportobjekt.

Sehen Sie sich den Blockereigniscode an

%Vor%

Da self::$_transportObject ein Objekt ist und PHP-Objekte sich in einer referenzähnlichen Weise verhalten, werden alle Änderungen am Transportobjekt in einem Beobachter beibehalten. Also, im obigen Beispiel, wenn ein Beobachter Entwickler sagte

%Vor%

Die Sicherung im Systemblockcode self::$_transportObject würde den neuen HTML-Code enthalten. Denken Sie daran, dass mehrere Beobachter die Möglichkeit haben, diesen Wert zu ändern, und die Auftragsbeobachter in Magento werden für jedes konfigurierte System unterschiedlich sein.

Ein zweiter Ansatz, den Sie verwenden könnten, ist die Verwendung des Magento-Registrierungsmusters. Registrieren Sie eine Variable vor dem dispatchEvent

    
Alan Storm 07.11.2012 20:23
quelle

Tags und Links