【问题标题】:Need a Magento Event that will fire after changing the shipping address of an order需要在更改订单的送货地址后触发的 Magento 事件
【发布时间】:2015-07-17 04:55:38
【问题描述】:

我一直在尝试左右事件,试图找到一个在通过 magento 管理员更新订单的送货地址后立即触发的事件。

我已经尝试了很多我在这里找到的东西,以及 sales_order_place_after(这是我用于前端事件的钩子),但是对于 adminhtml 事件,我似乎无法在保存时触发我的方法变化。

谁能指出我正在寻找的活动的方向?

【问题讨论】:

    标签: magento magento2


    【解决方案1】:

    我通过一些小技巧找到了解决方案:

    这种情况下需要绑定的事件是adminhtml_sales_order_addressSave。

    我通过创建一个全局事件观察器发现了这一点,它只是监视服务器上发生的所有事件:

    <adminhtml>
        <events>
            <controller_action_predispatch>
                <observers>
                    <add_event>
                        <type>singleton</type>
                        <class>MGD_Shippingodbc_Model_Observer</class>
                        <method>trackEvents</method>
                    </add_event>
                </observers>
            </controller_action_predispatch>
         </events>
    </adminhtml>
    

    然后我将这个函数添加到我的类中:

     function trackEvents($observer)
     {
        Mage::log("track event:" . $observer->getEvent()->getControllerAction()->getFullActionName());
    
        return $this;
     }
    

    有趣的是,我还意识到我也可以使用相同的方法来创建自己的事件调度程序,只需在事件通过此观察器函数时对其进行监控,如下所示:

    function trackEvents($observer)
    {
       if ($observer->getEvent()->getControllerAction()->getFullActionName() == "adminhtml_sales_order_addressSave")
           Mage::dispatchEvent('my_custom_event_observer', []);
    
           return $this;
    }
    

    【讨论】:

      【解决方案2】:

      请尝试

          controller_action_predispatch_checkout_onepage_saveShiping
      

      【讨论】:

      • 那似乎也不起作用...我按原样尝试了您的建议,并使用了 saveShipping(已更正了 sp)。我还尝试在 magento 管理员 -> 订单 -> 查看订单 -> 编辑送货地址... controller_action_predispatch_sales_order_addressSave 的表单中窥探,这也没有触发我需要的事件。
      • 请考虑添加至少一些文字向 OP 解释,并让更多读者回答为什么以及如何回答原始问题。
      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 2014-08-30
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      相关资源
      最近更新 更多