首页 > 解决方案 > Magento 2 将扩展属性添加到 Magento\Sales\Api\Data\ShipmentTrackInterface

问题描述

我正在尝试使用扩展属性将自定义跟踪 url 添加到跟踪中,我将这些添加到extension_attributes.xml

  <extension_attributes for="Magento\Sales\Api\Data\ShipmentTrackInterface">
    <attribute code="track_url" type="string"/>
  </extension_attributes>
    <extension_attributes for="Magento\Sales\Api\Data\ShipmentTrackCreationInterface">
        <attribute code="track_url" type="string"/>
    </extension_attributes>

清除生成的代码和缓存,界面填充正确,我用来\Magento\Sales\Api\ShipOrderInterface::execute保存货件:

            $this->shipOrderService->execute(
                $order->getId(),
                $items,
                $data->isCustomerNotify(),
                false,
                $comment,
                [$data->getTracking()]
            );

并且$data->getTracking()数据看起来像这样:

  {
    "track_number": "1Z37X3X41217934386",
    "title": "ups",
    "carrier_code": "ups",
    "extension_attributes": {
      "track_url": "blah"
    }
  }

所以一切看起来都很好,扩展属性数据被很好地传递到Magento\Framework\Model\AbstractExtensibleModel,但是从Magento\Framework\Api\AbstractSimpleObject哪个Magento\Sales\Api\Data\ShipmentTrackExtension扩展,$data变成一个空数组,我仍然无法弄清楚为什么会发生这种情况,我处于开发模式,不应该需要运行 DI 或类似的东西,有什么想法吗?

标签: phpmagentomagento2

解决方案


推荐阅读