J'ai des événements que je souhaite exécuter lorsqu'un client s'inscrit ou enregistre ses coordonnées. Pour cela, j'utilise deux événements: customer_register_success et customer_save_after. Le problème que j'ai est que je finis par exécuter la tâche deux fois car customer_save_after est toujours appelé dans la même exécution que customer_register_success
.
J'ai essayé de détecter si le client est nouveau en vérifiant les données d'origine et appelé isObjectNew
, mais les deux retournent des données qui impliquent que l'objet n'est en fait pas nouveau. Comment puis-je vérifier si le client s'enregistre simplement dans l'événement customer_save_after avant de définir quelque chose dans le registre de l' customer_register_success
événement?
la source
before
événement a lesisObjectNew
données pour autant que je sache car les données ne sont pas encore enregistrées. En ce qui concerne le sale, je suppose qu'il y aurait des façons plus élégantes mais ce n'est certainement pas un hack$customer->save(); $this->_dispatchRegisterSuccess($customer);
malheureusement ici, le client est enregistré avant que l'événement de registre ne soit déclenché, donc la méthode d'observateur ne fonctionnerait pas de toute façon :(Une autre approche consiste à vérifier quel contrôleur et quelle action ont déclenché l'événement.
Dans l'observateur, vous pouvez obtenir le nom du module, du contrôleur et de l'action.
Et vérifiez plus tard votre méthode qui envoie l'événement.
Dans une installation stock magento, lors de la création d'un utilisateur à partir de la zone utilisateur, la valeur de $ myURI serait
customer_account_createpost
.la source