У меня есть события, которые я хочу выполнить, когда клиент регистрирует или сохраняет свои данные. Для этого я использую два события: customer_register_success и customer_save_after. Проблема в том, что я запускаю задачу дважды, так как customer_save_after всегда вызывается в том же исполнении, что и customer_register_success
.
Я попытался определить, является ли клиент новым, проверив исходные данные и вызвав их isObjectNew
, но оба возвращают данные, из которых следует, что объект на самом деле не новый. Как я могу проверить, регистрируется ли клиент в событии customer_save_after, если в этом событии ничего не задано в реестре customer_register_success
?
источник
before
событие имеетisObjectNew
данные, так как данные еще не сохранены. Что касается грязного, я думаю, что были бы более изящные способы, но это, конечно, не хак$customer->save(); $this->_dispatchRegisterSuccess($customer);
к сожалению, здесь клиент сохраняется до того, как будет инициировано событие регистрации, поэтому метод наблюдателя все равно не сработает :(Другой подход заключается в проверке того, какой контроллер и какое действие вызвало событие.
В обозревателе вы можете получить модуль, контроллер и название действия.
А потом проверьте в своем методе, кто отправляет событие.
При стандартной установке magento при создании пользователя из пользовательской области значение $ myURI будет
customer_account_createpost
.источник