Différence entre «sales_order_place_after» et «sales_order_save_after»?

12

Magento 1 et Magento 2 ont tous deux les deux événements:

  1. sales_order_place_after
  2. sales_order_save_after.

J'ai une certaine confusion à leur sujet, quelles sont les différences détaillées entre eux?

Quelle situation utiliser laquelle?

Key Shang
la source

Réponses:

21

sales_order_place_after

  1. Cet événement est expédié après le paiement de la commande.
  2. Cette fonction d'événement depuis Mage_Sales_Model_Order::place()dans Magento 1 et \Magento\Sales\Model\Order::place()dans Magento 2

sales_order_save_after

  1. Cet événement est appelé chaque fois que la commande est enregistrée. Par exemple. Statut de la commande modifié, facturé, expédié et avoir.
  2. Cet événement étendant le modèle abstrait Mage_Core_Model_Abstract

    Par exemple. le Mage_Sales_Model_Orderpréfixe d'événement de classe est sales_order, donc le nom réel de l'événement après le chargement sera sales_order_load_after.

Abdul
la source
5

1. sales_order_place_after:

Cet événement est expédié du

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

Cet événement n'est envoyé qu'après avoir cliqué sur passer commande à partir du frontend.

2. sales_order_save_after:

Cet événement est déclenché lors de l' enregistrement de l'ordre, à partir du backend ou du frontend. Chaque fois qu'une modification est effectuée dans l'ordre et enregistrée, cet événement est envoyé. Cet événement est également envoyé lors de la commande depuis le frontend.

Purushotam Sangroula
la source