今天,我们将通过以下说明了解如何将自定义字段从报价项目转换为 Magento 2中的订单项目。
在Magento 2中将自定义组件从报价项目转换为订单项目的概述
- 第1步:添加
di.xml
文件 - 第2步:识别代码,插件
- 第3步:向您的模块添加一个类,然后识别一个函数
第1步:添加di.xml
文件
在模块中app/code/Mageplaza/HelloWorld/etc
,请添加该di.xml
文件。
第2步:识别代码,插件
在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
第3步:向您的模块添加一个类,然后识别一个函数
- 在模块中,添加类
Mageplaza\HelloWorld\Model\Plugin\Quote\HelloWorldToOrderItem
,并标识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;
}
- 您将从该函数的第一行获得
convert
类中函数的结果。Magento\Quote\Model\Quote\Item\ToOrderITem
$orderItem = $proceed($item, $additional);
- 接下来,
HelloWorldCustomData
为函数convert
类的结果创建值Magento\Quote\Model\Quote\Item\ToOrderItem
。 - 然后,返回一个对象
$orderItem
以恢复convert
该类中函数的结果Magento\Quote\Model\Quote\Item\ToOrderItem
。
这就是每个Magento 2商店所有者应该应用于从报价项目到订单项目复制自定义数据的所有要求