请参照以下说明,了解在 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 类中函数转换的结果。
以上就是全部内容。