2016-01-22 28 views
18

Qual è il nome dell'evento che viene inviato quando un cliente fa clic su "Vai alla cassa" dopo aver aggiunto elementi sul carrello? Voglio registrare che un utente ha avviato una procedura di checkout per l'analisi. Nello specifico, ho bisogno di acquisire il contenuto del carrello e altre informazioni come il prezzo totale ecc.Magento 2 - Evento inviato quando un utente fa clic su "Vai alla cassa"

Ho provato la maggior parte degli eventi su this list relativi a "checkout" o "carrello". Nessuno di essi sembra essere inviato quando un utente fa clic su checkout. Il più vicino che ho potuto ottenere era

controller_action_predispatch_checkout_cart_index

che viene inviato quando un utente fa clic su "Visualizza e modifica carrello".

sto guardando un paio di modi per risolvere questo

  1. ottenere il nome della manifestazione che viene inviato quando un utente fa clic su "Cassa". Osserva quell'evento e "aggancia" il mio codice ad esso.
  2. O c'è un modo per vedere tutti gli eventi che vengono inviati in tempo reale? Sto pensando che potrei essere in grado di trovare qualche altro evento che viene inviato vicino allo stesso tempo del checkout e quindi osservare quello.

risposta

0

È possibile utilizzare checkout_cart_save_before questo evento che si può trovare in vendor/Magento/module-out/Modello/Cart.php

Cerca seguente frammento di codice:

$this->_eventManager->dispatch('checkout_cart_save_before', ['cart' => $this]); 

Spero che questo ti aiuti

0

Probabilmente, questo è un secondo modo che stai cercando. È possibile registrare tutti gli eventi in "\ Magento \ Framework \ Event \ Gestione :: spedizione" il metodo (file ./vendor/magento/framework/Event/Manager.php):

public function dispatch($eventName, array $data = []) 
{ 
    $obm = \Magento\Framework\App\ObjectManager::getInstance(); 
    /** @var $logger \Psr\Log\LoggerInterface */ 
    $logger = $obm->get(\Psr\Log\LoggerInterface::class); 
    $logger->debug($eventName); 
    // original code 
    $eventName = mb_strtolower($eventName); 
    ... 
} 

file di log vengono messi in " ./var/log" cartella

0

penso che dovrebbe essere

sales_quote_save_after 

Speranza, ti aiuta.

1

Se voglio registrare tutti gli eventi che vengono inviati dopo un po 'di certa interazione, vado a Magento\Framework\Event\Manager e impostare un punto di interruzione nel metodo dispatch che registra $eventName alla console.

È inoltre possibile aggiungere un'istruzione di registro o scrivere un plug-in in un modulo personalizzato che registra il nome dell'evento in un file.

Ci sono molti eventi inviati quando si fa clic su Go to checkout, forse checkout_cart_save_before è quello che stai cercando.

Se si desidera un modo veloce e davvero sporco solo modificare la classe nel nucleo e aggiungere questa linea al principio della funzione di spedizione:

public function dispatch($eventName, array $data = []) 
{ 
    \Magento\Framework\App\ObjectManager::getInstance()->get(\Psr\Log\LoggerInterface::class)->debug($eventName); 
    ... 
} 
1

Usa controller_action_predispatch_checkout_index_index.

Problemi correlati