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

时间:2018-10-18 19:04:53

标签: xml magento2

每当在magento 2中创建新订单时,自动生成订单XML的最佳方法是什么?我将使用Web服务将这些数据导入到ERP,因此它必须以XML格式。

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

1 个答案:

答案 0 :(得分:0)

首先,您需要创建一个新的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类。在那里,您需要实现execute()方法,该方法从Magento 1中获取观察者参数。该观察者模型包含基于所使用事件的不同信息。 sales_order_save_after包含最近保存的订单对象。您可以使用此订单对象获取或设置所需的信息。