每当在magento 2中创建新订单时,自动生成订单XML的最佳方法是什么?我将使用Web服务将这些数据导入到ERP,因此它必须以XML格式。
与此类似,但使用了magento 2:https://magento.stackexchange.com/questions/199581/generate-order-xml-for-erp-in-magento-1-9
答案 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包含最近保存的订单对象。您可以使用此订单对象获取或设置所需的信息。