Różnica między `sales_order_place_after` i` sales_order_save_after`?

12

Magento 1 i Magento 2 mają dwa zdarzenia:

  1. sales_order_place_after
  2. sales_order_save_after.

Mam trochę zamieszania na ich temat, jakie są szczegółowe różnice między nimi?

Której sytuacji użyć której?

Key Shang
źródło

Odpowiedzi:

21

Sales_order_place_after

  1. To wydarzenie jest wysyłane po złożeniu płatności za zamówienie.
  2. To zdarzenie działa z poziomu Mage_Sales_Model_Order::place()Magento 1 i \Magento\Sales\Model\Order::place()Magento 2

sales_order_save_after

  1. To zdarzenie jest wywoływane za każdym razem, gdy zamówienie jest zapisywane. Na przykład Status zamówienia zmieniony, zafakturowany, wysłany i nota kredytowa.
  2. To wydarzenie rozszerzające model abstrakcyjny Mage_Core_Model_Abstract

    Na przykład Mage_Sales_Model_Orderprefiks wydarzenie klasa sales_order, więc rzeczywista nazwa po załadowaniu imprezy będzie sales_order_load_after.

Abdul
źródło
5

1. Sales_order_place_after:

To wydarzenie jest wysyłane z

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;
}

To wydarzenie jest wysyłane dopiero po kliknięciu opcji Złóż zamówienie z interfejsu użytkownika.

2. sales_order_save_after:

To zdarzenie jest uruchamiane przy zapisywaniu zamówienia, albo z backendu, albo z frontendu. Za każdym razem, gdy jakaś edycja jest wprowadzana w kolejności i zapisywana, to wydarzenie jest wysyłane. To wydarzenie jest również wysyłane podczas składania zamówienia z interfejsu użytkownika.

Purushotam Sangroula
źródło