Manuell ausgelöstes Ereignis funktioniert nicht
-
16-10-2019 - |
Frage
Ich habe einen Beobachter für sales_order_place_after
Und das funktioniert. Jetzt bin ich eine Bestellung erzeugen Ich selbst und möchte dieses Ereignis auslösen, aber es kommt nicht zu meinem Beobachter.
Stimmt hier etwas nicht:
Mage::dispatchEvent('sales_order_place_after', array('order' => $service->getOrder()));
Oder muss ich etwas Besonderes aus einer externen Skriptdatei tun? Mein Drehbuch sieht aus wie Dies.
Lösung
Sieht so aus, als wäre meine Vermutung richtig.
In Ihrer Konfiguration XML -Datei beobachten Sie das Ereignis nur in einem Bereich (z. B. Frontend). Ihr Skript wird jedoch in einem anderen Bereich ausgeführt. Das Platzieren des Ereignisses in den globalen Abschnitt Ihrer Konfigurationsdatei sollte sich darum kümmern.
Andere Tipps
Stieß auf das gleiche Problem, bei dem das Ereignis in meinem externen Skript nicht abgefeuert wurde.
Abhängig vom Umfang Ihres Beobachters in der config.xml
Sie müssen die festlegen Eventbereich.
require_once 'app/Mage.php';
Mage::init();
Mage::app()->addEventArea('global'); // e.g. 'global', 'frontend', 'adminhtml'
...
Siehe auch Dieser Artikel.
Ersetzen Sie das Ereignis an sales_order_save_after
, Dies sollte aus Frontend-, Administrator- und benutzerdefinierten Skripten ausgelöst werden.