Різниця між `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:

Ця подія запускається під час збереження замовлення з бекенда або фронтенда. Щоразу, коли якась редакція робиться в порядку та зберігається, ця подія розсилається. Ця подія відправляється під час оформлення замовлення також із фронтенду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.