Разница между `sales_order_place_after` и` sales_order_save_after`?

12

Magento 1 и Magento 2 имеют два события:

  1. sales_order_place_after
  2. sales_order_save_after,

У меня есть некоторая путаница по поводу них, в чем детальные различия между ними?

Какую ситуацию использовать?

Ключ Шан
источник

Ответы:

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:

Это событие вызывается при сохранении заказа, либо из внутреннего, либо из внешнего интерфейса. Каждый раз, когда редактирование производится в порядке и сохраняется, это событие отправляется. Это событие отправляется также при оформлении заказа из внешнего интерфейса.

Пурушотам Сангроула
источник