浏览文章
文章信息
Magento2 后台Order接口新增参数
13509
在Magento 2中,每个API取决于接口,API的输出取决于另一个接口
在vendor / magento / module-sales / Api / OrderRepositoryInterface.php中,您可以看到有一个get方法,当您打开该文件时,该方法返回\ Magento \ Sales \ Api \ Data \ OrderInterface有一个方法getExtensionAttributes(),如果该方法可用,那么您可以在API中添加任何属性。因此,请逐步说明
步骤1:您需要在自定义模块app / code / Auriga / Addon / etc / extension_attributes.xml中创建文件(可以在任何模块中实现)
<?xml version="1.0" ?><config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd"> <extension_attributes for="Magento\Sales\Api\Data\OrderInterface"> <attribute code="custom_attribute" type="string" /> </extension_attributes> </config>
步骤2:需要在app / code / Auriga / Addon / etc / webapi_rest / di.xml中创建文件
<?xml version="1.0"?><config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Sales\Api\OrderRepositoryInterface"> <plugin name="orderInformationUpdate" type="Auriga\Addon\Plugin\Api\OrderRepository" /> </type> </config>
第3步:按照di.xml中的声明,我们需要在/var/www/html/choppingboard/app/code/Auriga/Addon/Plugin/Api/OrderRepository.php中的OrderRepository.php中创建文件
<?php namespace Auriga\Addon\Plugin\Api; class OrderRepository { public function __construct( \Auriga\Addon\Model\CartCalculation $cartCalculation ) { $this->cartCalculation = $cartCalculation; } public function afterGet( \Magento\Sales\Api\OrderRepositoryInterface $subject, $entity ) { $extensionAttributes = $entity->getExtensionAttributes (); if ($extensionAttributes) { $extensionAttributes->setCustomAttribute ( 'custom_value' ); $entity->setExtensionAttributes ( $extensionAttributes ); } return $entity; } }
步骤4:需要运行“ php bin / magento setup:upgrade”
您可以检查结果中有一个customer_attribute节点可用现在打开BASE_URL / rest / default / V1 / orders / 2