“ sales_order_place_after”和“ sales_order_save_after”之间的区别?


12

Magento 1和Magento 2都有两个事件:

  1. sales_order_place_after
  2. sales_order_save_after

我对它们有些困惑,它们之间的详细区别是什么?

使用哪种情况?

Answers:


21

sales_order_place_after

  1. 下订单付款后调度此事件。
  2. Mage_Sales_Model_Order::place()Magento 1和\Magento\Sales\Model\Order::place()Magento 2中的此事件功能

sales_order_save_after

  1. 每次保存订单时都会调用此事件。例如。订单状态已更改,已开发票,已发货和贷项凭证。
  2. 该事件扩展了抽象模型 Mage_Core_Model_Abstract

    例如。该Mage_Sales_Model_Order事件类前缀sales_order,所以实际装货后事件的名称将是sales_order_load_after


5

1. sales_order_place_after:

此事件是从

class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract
{
...
public function place()
{
    Mage::dispatchEvent('sales_order_place_before', array('order'=>$this));
    $this->_placePayment();
    Mage::dispatchEvent('sales_order_place_after', array('order'=>$this));
    return $this;
}

仅在从前端单击下订单后才调度此事件。

2. sales_order_save_after:

此事件被触发节能顺序,无论是从后端或前端。每次按顺序进行一些编辑并保存时,将调度此事件。在从前端下订单时也会调度此事件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.