浏览文章

文章信息

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



原创