ความแตกต่างระหว่าง "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_ordersales_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:

เหตุการณ์นี้จะถูกเรียกใช้ในการบันทึกคำสั่งจากแบ็กเอนด์หรือส่วนหน้า ทุกครั้งที่มีการแก้ไขตามลำดับและบันทึกเหตุการณ์นี้จะถูกส่ง เหตุการณ์นี้ถูกส่งในขณะที่วางคำสั่งซื้อจากส่วนหน้าเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.