在magento中激活客户时会触发什么事件

时间:2014-04-03 22:19:00

标签: magento events

我已经编写了一个Magento模块来激活客户(管理员必须批准/激活所有新客户注册)。

在我的config.xml中,我使用adminhtml_customer_save_after作为事件的代码来激活我的函数。

如果我真的进入客户记录,进行更改并保存,这样可以正常工作。但是,如果我只是从主要客户>中的操作下拉列表中选择“客户激活”。管理客户页面并提交它不会触发。

在这种情况下,我可以使用不同的事件代码来触发我的功能吗? 我查看了这个很棒的资源[link] http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7,但看不到任何其他可能的嫌疑人。

非常感谢

感谢您寻找Keyur, 这是我的app / code / local / customcron / updateaddress / etc / config.xml

的代码
<?xml version="1.0" encoding="UTF-8"?>

<modules>

    <CustomCron_UpdateAddress>

        <version>0.0.1</version>

    </CustomCron_UpdateAddress>

</modules>

<global>

    <models>

        <customcron_updateaddress>

            <class>CustomCron_UpdateAddress_Model</class>

        </customcron_updateaddress>

    </models>

    <events>

        <customer_save_before>

            <observers>

                <customcron_updateaddress>

                    <class>customcron_updateaddress/observer</class>

                    <method>addrUpdate</method>

                    <type>singleton</type>

                </customcron_updateaddress>

            </observers>

        </customer_save_before>

    </events>

</global>

这是我的app / code / local / customcron / updateaddress / model / observer.php的代码

class CustomCron_UpdateAddress_Model_Observer
{
public function addrUpdate(Varien_Event_Observer $observer)
{
        // Retrieve the Customer being updated from the event observer
    if($observer->getCustomer()) {
        $customer = $observer->getCustomer();

        //$customer = $observer->getEvent()->getCustomer();

            // Get the details from customer object
        $customer_id = $customer->getId();
        $name = $customer->getName();
        $email = $customer->getEmail();
        Mage::log(
            "{$customer_id} {$name} ({$email}) updated",
            null, 
            'customer-updates.log'
        );

等。 这继续检查是否已存储地址,如果没有获取详细信息并更新相关表以添加地址。 但是到目前为止,这只会在打开并保存记录时触发(即使在“保存并继续编辑”时也是如此)并且仅在我使用adminhtml_customer_save_after时触发。如果我使用除此之外的任何东西要么根本不开火,要么我得到'$ customer is not object'错误。

非常感谢

1 个答案:

答案 0 :(得分:0)

每当您更改客户customerSaveBefore事件的任何记录时,即使在您从管理客户更改客户属性或您实际进入客户记录的情况下,也始终触发事件,请进行更改并保存。

customerSaveBefore event always execute before any changes on customer