Perbedaan antara `sales_order_place_after` dan` sales_order_save_after`?

12

Magento 1 dan Magento 2 keduanya memiliki dua acara:

  1. sales_order_place_after
  2. sales_order_save_after.

Saya memiliki beberapa kebingungan tentang mereka, apa perbedaan rinci antara mereka?

Situasi mana yang digunakan?

Key Shang
sumber

Jawaban:

21

sales_order_place_after

  1. Acara ini dikirim setelah pembayaran pesanan dilakukan.
  2. Fungsi acara ini dari Mage_Sales_Model_Order::place()dalam Magento 1 & \Magento\Sales\Model\Order::place()di Magento 2

sales_order_save_after

  1. Acara ini disebut setiap kali pesanan disimpan. Untuk misalnya. Status pesanan berubah, ditagih, dikirim & memo kredit.
  2. Acara ini memperluas model abstrak Mage_Core_Model_Abstract

    Untuk misalnya. yang Mage_Sales_Model_Orderacara kelas awalan sales_order, sehingga nama sebenarnya setelah pemuatan acara akan sales_order_load_after.

Abdul
sumber
5

1. sales_order_place_after:

Acara ini dikirim dari

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

Acara ini dikirim hanya setelah mengklik pesanan tempat dari frontend.

2. sales_order_save_after:

Acara ini dipicu pada urutan penyimpanan, baik dari backend atau frontend. Setiap kali pengeditan dilakukan secara berurutan dan disimpan, acara ini dikirim. Acara ini dikirim sambil melakukan pemesanan dari frontend juga.

Purushotam Sangroula
sumber