Ich habe Ereignisse, die ich ausführen möchte, wenn ein Kunde seine Daten registriert oder speichert. Dafür verwende ich zwei Ereignisse: customer_register_success und customer_save_after. Das Problem, das ich habe, ist, dass ich die Aufgabe am Ende zweimal ausführe, da customer_save_after immer in derselben Ausführung wie aufgerufen wird customer_register_success
.
Ich habe versucht festzustellen, ob der Kunde neu ist, indem ich die Originaldaten überprüft und angerufen habe isObjectNew
, aber beide Rückgabedaten, die das Objekt implizieren, sind tatsächlich nicht neu. Wie kann ich überprüfen, ob sich der Kunde gerade im Ereignis customer_save_after registriert, ohne etwas in der Registrierung des customer_register_success
Ereignisses festzulegen?
quelle
before
Ereignis hat dieisObjectNew
Daten, soweit ich weiß, da die Daten noch nicht gespeichert sind. Was schmutzig angeht, würde es wohl elegantere Wege geben, aber es ist sicherlich kein Hack$customer->save(); $this->_dispatchRegisterSuccess($customer);
Leider wird hier der Kunde gespeichert, bevor das Registerereignis ausgelöst wird, sodass die Beobachtermethode sowieso nicht funktionieren würde :(Ein anderer Ansatz besteht darin, zu überprüfen, welcher Controller und welche Aktion das Ereignis ausgelöst haben.
Im Observer erhalten Sie den Modul-, Controller- und Aktionsnamen.
Überprüfen Sie später Ihre Methode, wer das Ereignis auslöst.
Bei einer Standard-Magento-Installation wäre beim Erstellen eines Benutzers aus dem Benutzerbereich der Wert von $ myURI
customer_account_createpost
.quelle