我希望能够运行一些功能module
,我正在建立customer registers
一个帐户,但我似乎找不到任何event
被解雇的new customer registration
.
有没有人知道event
那个被派遣的人?
每当我正在寻找一个事件时,我会暂时编辑该Mage.php
文件以输出特定请求的所有事件.
File: app/Mage.php public static function dispatchEvent($name, array $data = array()) { Mage::log('Event: ' . $name); //not using Mage::log, as //file_put_contents('/tmp/test.log','Dispatching '. $name. "\n",FILE_APPEND); //poor man's log Varien_Profiler::start('DISPATCH EVENT:'.$name); $result = self::app()->dispatchEvent($name, $data); #$result = self::registry('events')->dispatch($name, $data); Varien_Profiler::stop('DISPATCH EVENT:'.$name); return $result; }
然后执行我想要进行的任何操作.Magento事件在逻辑上被命名,因此通过生成的日志进行扫描/排序通常会揭示我所追求的内容.
customer_register_success是您正在寻找的:
singleton your_module/observer yourMethod
我今天发现了如何实现这一目标.它涉及使用其中一个通用控制器事件.将该节点config.xml
挂钩到正确的事件中:
.... ...etc
该controller_action_postdispatch_REQUESTPATH
事件被抛出每个扩展器Mage_Core_Controller_Front_Action
(这基本上是所有的人),这使得它非常容易的目标.同上controller_action_predispatch_REQUESTPATH
.
如果完全解决这个案子,我有点惊讶没有答案.
客户创造可以发生
通过url customer/account/create
在结帐时注册
我通过跟踪两个事件来解决它:
config.xml中
myextensionkey/observer createAccount singleton myextensionkey/observer createAccountCheckout singleton
并在Observer.php中
public function createAccount($observer) { ... } //Nothing special here public function createAccountCheckout($observer) { if ($observer->getQuote()->getData('checkout_method') != Mage_Checkout_Model_Type_Onepage::METHOD_REGISTER) { return; }
编辑:我改变了
成
因为在预发布上,帐户尚未创建.例如,如果商店中已存在电子邮件,则可能存在错误.
没有直接事件,但您可以使用customer_save_commit_after事件.此事件还可以保证客户保存在商店的数据库中.此事件的问题是触发两次.Bellow是一个允许你使用此事件的hack - 列出了观察者功能:
public function customer_save_commit_after($p_oObserver) { $l_oCustomer = $p_oObserver->getCustomer(); if ($l_oCustomer->isObjectNew() && !$l_oCustomer->getMyCustomKeyForIsAlreadyProcessed()) { $l_oCustomer->setMyCustomKeyForIsAlreadyProcessed(true); // new customer } else { // existing customer } return false; }
希望这有助于某人!