Tengo eventos que deseo ejecutar cuando un cliente se registra o guarda sus detalles. Para esto, estoy usando dos eventos: customer_register_success y customer_save_after. El problema que tengo es que termino ejecutando la tarea dos veces, ya que customer_save_after siempre se llama en la misma ejecución que customer_register_success
.
He intentado detectar si el cliente es nuevo comprobando los datos originales y llamado isObjectNew
, pero ambos devuelven datos que implican que el objeto no es nuevo. ¿Cómo puedo verificar si el cliente se está registrando en el evento customer_save_after antes de configurar algo en el registro en el customer_register_success
evento?
fuente
before
evento tiene losisObjectNew
datos hasta donde yo sé, ya que los datos aún no se guardan. En cuanto a lo sucio, supongo que habría formas más elegantes, pero ciertamente no es un truco$customer->save(); $this->_dispatchRegisterSuccess($customer);
desafortunadamente aquí, el cliente se guarda antes de que se active el evento de registro, por lo que el método de observación no funcionaría de todos modos :(Otro enfoque es verificar qué controlador y acción activaron el evento.
En el observador puede obtener el módulo, el controlador y el nombre de la acción.
Y luego verifique en su método quién está enviando el evento.
En una instalación de stock de magento, al crear un usuario desde el área de usuario, el valor de $ myURI sería
customer_account_createpost
.fuente