将自定义字段从报价单(Quote)项转换为订单(Order)项

请参照以下说明,了解在 Magento 2 中将自定义字段从报价单(Quote)项转换为订单(Order)项
的方法。

概览

  • 第一步:添加一个 di.xml 文件
  • 第二步:定义一段代码,插件
  • 第三步:向你们模块中添加一个类,然后定义一个函数

第一步:添加一个 di.xml 文件

在 app/code/Mageplaza/HelloWorld/etc 路径下,添加一个 di.xml 文件。

第二步:添加一段代码,插件

在 di.xml 文件中,定义一段代码:

<type name="Magento\Quote\Model\Quote\Item\ToOrderItem">
        <plugin name="HelloWorld_to_order_item" type="Mageplaza\HelloWorld\Model\Plugin\Quote\HelloWorldToOrderItem"/>
</type>

然后,定义一个插件Mageplaza\HelloWorld\Model\Plugin\Quote\HelloWorldToOrderItem” of class “Magento\Quote\Model\Quote\Item\ToOrderItem

第三步:向你们模块中添加一个类,然后定义一个函数

在模块中,添加一个类 Mageplaza\HelloWorld\Model\Plugin\Quote\HelloWorldToOrderItem ,然后定义一个可以同时将自定义字段从报价单(Quote)项转换为订单(Order)项的函数 aroundConvert 。

public function aroundConvert(
        \Magento\Quote\Model\Quote\Item\ToOrderItem $subject,
        \Closure $proceed,
        \Magento\Quote\Model\Quote\Item\AbstractItem $item,
        $additional = []
    ) {
        /** @var $orderItem Item */
        $orderItem = $proceed($item, $additional);
$orderItem->setHelloWorldCustomData($item->getHelloWorldCustomData());
        return $orderItem;
    }
  • 你可以从Magento\Quote\Model\Quote\Item\ToOrderITem 类中的第一行$orderItem = $proceed($item, $additional); 得到函数转换的结果。
  • 接下来,为函数转换类 Magento\Quote\Model\Quote\Item\ToOrderItem 的结果创建HelloWorldCustomData 的值。
  • 然后,返回一个对象 $orderItem 来覆盖 Magento\Quote\Model\Quote\Item\ToOrderItem 类中函数转换的结果。

以上就是全部内容。

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: