2016-01-22 5 views
18

Wie lautet der Name des Ereignisses, das ausgelöst wird, wenn ein Kunde nach dem Hinzufügen von Artikeln in seinem Einkaufswagen auf "Zur Kasse" klickt? Ich möchte registrieren, dass ein Nutzer einen Checkout-Prozess für Analytics gestartet hat. Insbesondere muss ich den Inhalt des Einkaufswagens und andere Informationen wie Gesamtpreis etc. erfassen.Magento 2 - Wird ein Ereignis ausgelöst, wenn ein Benutzer auf "Zur Kasse" klickt

Ich habe die meisten Ereignisse auf this list ausprobiert, die sich entweder auf "Kasse" oder "Wagen" beziehen. Keiner von ihnen scheint versandt zu werden, wenn ein Benutzer auf die Kasse klickt. Die nächste, die ich bekommen konnte, war

controller_action_predispatch_checkout_cart_index

, die ausgelöst wird, wenn ein Benutzer klickt auf „Anzeigen und Bearbeiten Warenkorb“.

Ich bin auf ein paar Möglichkeiten suchen, diese

  1. Holen Sie sich den Namen des Ereignisses zu lösen, die ausgelöst wird, wenn ein Benutzer klickt auf „zur Kasse gehen“. Beobachte dieses Ereignis und "hake" meinen Code daran.
  2. Oder gibt es eine Möglichkeit, alle Ereignisse in Echtzeit zu sehen? Ich denke, dass ich in der Lage sein könnte, ein anderes Ereignis zu finden, das zeitgleich mit dem Checkout versendet wird, und dann dieses zu beobachten.

Antwort

0

Sie können checkout_cart_save_before dieses Ereignis verwenden, die Sie in Verkäufer/magento/Modul-Kasse/Model/Cart.php

Suche folgende Code-Schnipsel finden:

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

Hoffe, das hilft Ihnen

0

Wahrscheinlich ist dies eine zweite Art, die Sie suchen. Sie können alle Ereignisse in "\ Magento \ Framework \ Ereignis \-Manager :: dispatch" log-Methode (Datei ./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); 
    ... 
} 

Log-Dateien in "gesetzt werden ./var/log“-Ordner

0

ich denke, es

sales_quote_save_after 

Hoffnung sein sollte, hilft es Ihnen heraus.

1

Wenn ich alle Ereignisse protokolliert werden soll, die nach einiger bestimmten Interaktion versandt, gehe ich zu Magento\Framework\Event\Manager und einen Haltepunkt in der Methode, die dispatch$eventName an die Konsole anmeldet.

Sie können auch eine Protokollanweisung hinzufügen oder ein Plug-in in ein benutzerdefiniertes Modul schreiben, das den Ereignisnamen in einer Datei protokolliert.

Es gibt viele Ereignisse, die ausgelöst werden, wenn Sie auf Go to checkout klicken, vielleicht ist der, den Sie suchen.

Wenn Sie eine schnelle und wirklich schmutzig wollen Art und Weise nur die Klasse im Kern verändern und diese Zeile am Anfang der Dispatch-Funktion hinzu:

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

Verwendung controller_action_predispatch_checkout_index_index.

Verwandte Themen