当前位置: 技术文章>> 如何在Magento中将自定义字段从报价单项转换为订单项

文章标题:如何在Magento中将自定义字段从报价单项转换为订单项
  • 文章分类: Magento
  • 14071 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


在电子商务商店中,每种产品都有不同的运费以及店主收取的其他额外费用。因此,如果客户在他/她的购物车中添加了产品,则可以在购物车中以及在结帐时查看整个购物车摘要。此外,Magento将每个购物车存储在后端中称为持久购物车,所有添加的产品都绑定在一个报价项目字段中。但是,如果恢复此类购物车,则只会恢复选定的产品,而不会恢复其额外费用或运费。因此,每次您的客户在回来结账时都需要重新选择每个选项。

因此,要解决此类问题,您需要在后端创建自定义附加报价字段,该字段保存此类值并在购物车恢复时重新应用费用。要执行相同的操作,只需按照以下两个步骤将自定义字段从报价单项转换为Magento

中的订单项 首先,在以下路径创建“di.xml”文件。

app\code \Vendor \Extension\etc\

<pre class="lang:default decode:true">
<?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\Quote\Model\Quote\Item\ToOrderItem">
 <plugin name="quote_item_to_order_item"    type="Vendor\Extension\Plugin\Quote\Convertquoteitemtoorder"/>
</type>
 </config>
</pre>

现在,我们需要再创建一个文件“转换报价项到订单.php”以在此路径上转换报价项。

app\code\Vendor\Extension\Plugin\Quote\


<pre class="lang:default decode:true">
<?php
namespace Vendor\Extension\Plugin\Quote;
class Convertquoteitemtoorder{
 public function aroundConvert(
     \Magento\Quote\Model\Quote\Item\ToOrderItem $subject,
     \Closure $proceed,
        \Magento\Quote\Model\Quote\Item\AbstractItem $item,
     $additional = []
 ) {
     $orderItem = $proceed($item, $additional);
        $orderItem->setCustomField1($item->getCustomField1());
        $orderItem->setCustomField2($item->getCustomField2());
        $orderItem->setCustomField3($item->getCustomField3());
     return $orderItem;
 }
}
</pre>

就是这样,通过遵循这两个简单的步骤,您可以将报价字段中的所有附加自定义字段转移到客户的最终订单列表中。您可以自由添加上面的代码操作。


推荐文章