Magento 2如何在报价项目中设置自定义数据/选项?

chhkpiq4  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(149)

我想将一些数据添加到报价项中,而不是产品中。

$quoteItems = $this->cart->getItems();
foreach ($quoteItems as $eachQuoteItem) {
    $eachQuoteItem->setCustomname('aaaa');
    $eachQuoteItem->setIsSuperMode(true);
    $eachQuoteItem->save();
};

我可以使用$eachQuoteItem-〉getCustomname();在同一页中取回'aaaa',但我无法在其他请求中获得数据。
有什么建议吗?谢谢

ovfsdjhp

ovfsdjhp1#

所提供的答案解决了将报价项目转换为订单项目的任务。但是,听起来您好像是在询问如何首先设置报价项目上的数据。
您可以通过以下方式实现此目的:
a)使用getAllVisibleItems()从报价中获取项目,
B)对每个项目调用setData('field', val)
c)使用setItems(items)在报价上设置更新的项目
d)然后,保存报价

pkmbmrz7

pkmbmrz72#

它是晚了,但可能你需要为这种情况下建议here创建插件。

kognpnkq

kognpnkq3#

您可以通过以下操作将自定义字段值保存在quote_item表中:
创建ModuleName/CompanyName/etc/di.xml

<?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">
        <plugin name="to_save_custom_field_to_quote_item" type="ModuleName\CompanyName\Plugin\ToQuoteItem" />
    </type>    
</config>

创建ModuleName\CompanyName\Plugin\ToQuoteItem.php

<?php
namespace ModuleName\CompanyName\Plugin;

use Magento\Quote\Model\Quote\Item;

    class ToQuoteItem
    {

        public function afterBeforeSave(Item $subject)
        {
            $subject->setCustomField("YOUR_VALUE");
        }
    }

相关问题