Magento2: Как добавить наблюдателя для catch при размещении нового заказа
Я хотел сохранить заказы от magento2
до моего local Database
.
Я планирую создать module
и add Observer
, чтобы поймать один раз order is placed
.
Я мало что знаю о Events & observer
, только что прошел по этой ссылке
Пожалуйста, помогите мне, есть ли какие-либо Event
, уже заданные Magento2
после new Order
. если нет события по умолчанию для размещения заказа, где я должен написать событие для нового заказа.
Заранее благодарю.
Редактировать:
App\code\Autosynch\Sale\registration.php
<?php /**
* Copyright © 2016 Magento. All rights reserved. * See COPYING.txt for license details.
*/
\Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Autosynch_sale',
__DIR__
);
App\cpde\Autosynch\Sale\Observer\OrderPlaceAfter.php
<?php
namespace Autosynch\Sale\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer;
use \Psr\Log\LoggerInterface;
class OrderPlaceAfter implements ObserverInterface
{
public function execute(Observer $observer, LoggerInterface $logger)
{
$order = $observer->getEvent()->getOrder();
$logger->info($order->getData());
$logger->debug($order->getData());
var_dump($order->getData());
exit;
}
}
App\code\Autosynch\Sale\etc\module.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © 2016 Magento. All rights reserved. * See COPYING.txt for license details.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Autosynch_Sale" setup_version="0.0.1">
</module>
</config>
App\code\Autosynch\Sale\etc\event.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="checkout_submit_all_after">
<observer name="modulename_sales_order_place_after" instance="Autosynch\Sale\Observer\OrderPlaceAfter" />
</event>
</config>
Пожалуйста, помогите мне, где я пропал.
2 answers
Создайте файл Autosynch/Sale/etc/event.xml
и поместите ниже код,
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="checkout_submit_all_after">
<observer name="autosynch_sales_order_place_after" instance="Autosynch\Sale\Observer\OrderPlaceAfter" />
</event>
</config>
, А затем создайте класс наблюдателя OrderPlaceAfter.php в Autosynch/Sale/Observer
.
<?php
namespace Autosynch\Sale\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer;
class OrderPlaceAfter implements ObserverInterface
{
protected $_logger;
/**
* @param \Psr\Log\LoggerInterface $_logger
*/
public function __construct(
\Psr\Log\LoggerInterface $_logger
){
$this->_logger = $_logger;
}
public function execute(Observer $observer)
{
$order = $observer->getEvent()->getOrder();
$this->_logger->info($order->getData());
$this->_logger->debug($order->getData());
//var_dump($order->getData());
//exit;
}
}
Надеюсь, это поможет Вам.