如何自动生成订单 XML - Magento 2

How to auto-generate order XML - Magento 2

每当在 magento 2 中创建新订单时,自动生成订单 XML 的最佳方法是什么?我将使用网络服务将这些数据导入 ERP,因此它需要在 XML.

与此类似,但使用 magento 2:https://magento.stackexchange.com/questions/199581/generate-order-xml-for-erp-in-magento-1-9

首先,您需要创建一个新的 Magento 2 模块,如前所示。如果你想对事件做出反应,你需要在你的模块目录中创建一个文件 etc/events.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="sales_order_save_after">
        <observer name="mymodule_sales_order_save_after" instance="MyCompany\MyModule\Observer\Observer" />
    </event>
</config>

如果您想了解每个新订单,您需要使用 sales_order_save_after 事件,该事件在数据库中创建新订单后立即触发。这也是 Magento 2 结帐中将客户重定向到结帐成功页面之前的最后一步。 您只需要创建一个 execute() 方法。如果您需要工厂或存储库之类的东西,您可以像往常一样在 __construct() 方法中注入它们。

<?php namespace MyCompany\MyModule\Observer; 
use Magento\Framework\Event\ObserverInterface; 

class Observer implements ObserverInterface { 

    protected $connector; public function __construct() { 
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
    }

    public function execute(\Magento\Framework\Event\Observer $observer) { 
        $order = $observer->getEvent()->getOrder();
        $customerId = $order->getCustomerId();

        if($customerId)
            #do something with order an customer
    }
}

我在名为 Observer/Observer.php 的模块根目录中创建了一个简单模型。您可以根据自己的喜好命名文件夹和模型文件。您只需要扩展 Magento 2 ObserverInterface class。在那里你需要实现 execute() 方法,它获取一个观察者参数,你可能从 Magento 1 中知道。这个观察者模型包含不同的信息,基于使用的事件。 sales_order_save_after 包含最近保存的订单对象。您可以使用此订单对象来获取或设置您需要的信息。