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>

Пожалуйста, помогите мне, где я пропал.

Author: JB Pakalapati, 2018-06-07

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

Надеюсь, это поможет Вам.

 3
Author: Prasanta Hatui, 2018-06-21 15:23:18

Я предполагаю, что вы знаете, как создать наблюдателя. Вы можете перехватить событие sales_order_place_after для своей задачи.

Ссылка

 3
Author: PY Yick, 2018-06-07 08:30:39