0

当客户验证其帐户时,是否有办法捕捉事件?我需要此功能来使用户能够访问其他集成子系统

4

3 回答 3

1

由于confirmAction()似乎没有触发任何事件

/app/code/core/Mage/Customer/controllers/AccountController.php

你可以做

  1. 覆盖前端核心控制器Mage::dispatchEvent()以使用或直接confirmAction在 AccountController.php 中添加代码来创建您自己的事件

  2. 使用@Pavel Novitsky 答案,但您可能需要检查您是否在确认帐户控制器上或检查电子邮件验证标志的更改,因为每次客户信息更改/更新时都会触发此事件

例如

public function myObserver(Varien_Event_Observer $observer)
{

   if(Mage::app()->getRequest()->getControllerName() == '....account_confirm'){
      $customer = $observer->getCustomer();
      ....
   }
}
于 2013-01-03T15:36:17.263 回答
1

即使您可以在客户验证后使用以下代码创建自己的事件。

Mage::dispatchEvent('Yuor_Unique_Event_Name', array());

现在使用这个事件你可以做任何你想做的事情。

于 2013-01-03T15:27:16.207 回答
1

每个模型都有标准的 load_before、load_after、save_before、save_after 等事件。查看 Mage_Core_Model_Abstract 以获取所有预定义事件的列表。

对于客户,您可以使用 customer_save_after 事件。在观察者中检查原始数据与新数据:

public function myObserver(Varien_Event_Observer $observer)
{
    $customer = $observer->getCustomer();
    $orig_active_flag = $custoner->getOrigData('is_active');
    $new_active_flag = $customer->getData('is_active');

    // do something here …

    return $this;
}
于 2013-01-03T15:13:49.807 回答