当前位置:  开发笔记 > 编程语言 > 正文

在Magento有客户账户注册活动吗?

如何解决《在Magento有客户账户注册活动吗?》经验,为你挑选了5个好方法。

我希望能够运行一些功能module,我正在建立customer registers一个帐户,但我似乎找不到任何event被解雇的new customer registration.

有没有人知道event那个被派遣的人?



1> Alan Storm..:

每当我正在寻找一个事件时,我会暂时编辑该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事件在逻辑上被命名,因此通过生成的日志进行扫描/排序通常会揭示我所追求的内容.


如果你有谢尔曼威廉姆斯光泽坐在你旁边
此外,我觉得这个答案超越了.它不仅可以回答您的问题,还可以帮助您不必再问一个类似的问题."给一个人一条鱼,喂他一天.教他钓鱼,永远喂他"
毫无疑问,绝对有用.但是,我仍然想回答我的问题,所以我不会认为这是一个答案.

2> Paul Grigoru..:

customer_register_success是您正在寻找的:


  
    
      
        
          
            singleton
            your_module/observer
            yourMethod
          
        
      
    
  


AFAIK,此事件仅在通过url:customer/account/create创建帐户时才有效

3> Jonathan Day..:

我今天发现了如何实现这一目标.它涉及使用其中一个通用控制器事件.将该节点config.xml挂钩到正确的事件中:


 ....
  
    
     ...etc

controller_action_postdispatch_REQUESTPATH事件被抛出每个扩展器Mage_Core_Controller_Front_Action(这基本上是所有的人),这使得它非常容易的目标.同上controller_action_predispatch_REQUESTPATH.


对于我来说,使用camelCase"createPost"失败了,但是当改为`controller_action_postdispatch_customer_account_createpost`时,这种方法起了作用.谢谢!
在结账过程中注册时不会触发此操作
后人:这是一个非常糟糕的解决方案,因为它不会触发*任何*新客户注册.只有当客户通过*特定的URL注册时,它才会触发,这不是客户在vanilla Magento中注册的唯一方式,更不用说安装任意数量的模块了.观察控制器动作很少*是正确的方法.

4> ahe_borrigli..:

如果完全解决这个案子,我有点惊讶没有答案.

客户创造可以发生

    通过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;
    }

编辑:我改变了



因为在预发布上,帐户尚未创建.例如,如果商店中已存在电子邮件,则可能存在错误.


加上我,因为我想知道为什么这个答案没有被检查为正确的答案.

5> 小智..:

没有直接事件,但您可以使用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;

}

希望这有助于某人!

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有