Sự khác biệt giữa `sales_order_place_after` và` sales_order_save_after`?


12

Cả Magento 1 và Magento 2 đều có hai sự kiện:

  1. sales_order_place_after
  2. sales_order_save_after.

Tôi có một số nhầm lẫn về họ, sự khác biệt chi tiết giữa chúng là gì?

Tình huống nào để sử dụng?

Câu trả lời:


21

sales_order_place_after

  1. Sự kiện này được gửi đi sau khi thanh toán đơn hàng được đặt.
  2. Chức năng sự kiện này từ Mage_Sales_Model_Order::place()trong Magento 1 & \Magento\Sales\Model\Order::place()trong Magento 2

sales_order_save_after

  1. Sự kiện này được gọi mỗi khi đơn hàng được lưu. Ví dụ. Tình trạng đơn hàng đã thay đổi, lập hóa đơn, vận chuyển và ghi nhớ tín dụng.
  2. Sự kiện này mở rộng mô hình trừu tượng Mage_Core_Model_Abstract

    Ví dụ. các Mage_Sales_Model_Ordertiền tố sự kiện lớp sales_order, vì vậy tên sau khi tải sự kiện thực tế sẽ là sales_order_load_after.


5

1. sales_order_place_after:

Sự kiện này được gửi từ

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

Sự kiện này được gửi đi chỉ sau khi nhấp vào thứ tự địa điểm từ frontend.

2. sales_order_save_after:

Sự kiện này được kích hoạt theo thứ tự lưu, từ phụ trợ hoặc frontend. Mỗi khi một số chỉnh sửa được thực hiện theo thứ tự và được lưu, sự kiện này được gửi đi. Sự kiện này được gửi đi trong khi đặt hàng từ frontend là tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.