Tenho eventos que desejo executar quando um cliente registra ou salva seus detalhes. Para isso, estou usando dois eventos: customer_register_success e customer_save_after. O problema que estou tendo é que acabo executando a tarefa duas vezes, pois customer_save_after é sempre chamado na mesma execução que customer_register_success
.
Tentei detectar se o cliente é novo verificando os dados originais e chamados isObjectNew
, mas ambos retornam dados que sugerem que o objeto não é realmente novo. Como posso verificar se o cliente está apenas se registrando no evento customer_save_after antes de definir algo no registro no customer_register_success
evento?
fonte
before
evento tem osisObjectNew
dados, tanto quanto eu sei, pois os dados ainda não foram salvos. Tanto quanto suja vai, eu acho que não haveria maneiras mais elegantes, mas certamente não é um hack$customer->save(); $this->_dispatchRegisterSuccess($customer);
Infelizmente aqui, o cliente é salvo antes do evento registo é acionado, então o método observador não iria funcionar de qualquer maneira :(Outra abordagem é verificar qual controlador e ação acionou o evento.
No observador, você pode obter o nome do módulo, controlador e ação.
E depois verifique no seu método quem está despachando o evento.
Em uma instalação de estoque do magento, ao criar um usuário a partir da área do usuário, o valor de $ myURI seria
customer_account_createpost
.fonte