Magento:在观察者之间传递数据


Magento: pass data between observers

我有以下问题:

我使用观察者"controller_action_predispatch_checkout_onepage_saveBilling"来获取计费部分中的自定义下拉列表的值,用户可以使用该下拉列表选择客户组,但只有当他在结帐阶段创建帐户时才可以。

现在我想用"sales_order_place_after"观察者来设置用户选择的客户组,但是我不明白如何将group_custom_id值从第一个观察者传递到第二个观察者。

  1. 使用

    将两个观察器注册为单例
    <type>singleton</type>
    

    在你的config.xml(或省略它,因为它是默认类型)

  2. 将数据作为属性存储在观察者类本身

    class My_Module_Model_Observer
    {
        protected $_myDropdownValue;
        public function onSaveBilling(Varien_Event_Observer $observer)
        {
            // ...
            $this->_myDropdownValue = ...;
        }
        public function onPlaceOrder(Varien_Event_Observer $observer)
        {
            //access value with $this->_myDropdownValue;
        }
    }
    

记得KISS。将值存储在一个变量中,也许是在你的观察者类中,因为观察者通常是单例的,并且单例在页面被服务之前不会消失。