gpt4 book ai didi

magento - 如何更新 Magento 中的订单项自定义选项?

转载 作者:行者123 更新时间:2023-12-04 09:41:34 26 4
gpt4 key购买 nike

是否可以从订单更新产品自定义选项值?
我知道当商品在购物车中时(结帐前)是可能的,但我不确定订单中是否可能。

我们的应用程序正在销售一项服务,并且我们遇到了一种情况,即仅在结帐后才可以获得所需的数据。

最佳答案

这取决于您定制的目的。订单项具有存储为序列化数组的自定义选项,您可以随时对其进行修改。

与报价项目不同,订单项目有不同的名称来检索它们。该方法被称为 getProductOptions()
还有另一种方法可以让您设置它们 setProductOptions(array $options) .

以下是此方法在不同测试用例中的一些使用示例:

  • 如果您只需要存储它以供内部代码使用,您只需将选项添加到数组数组中并将其设置回:
    $existentOptions = $orderItem->getProductOptions();
    $existentOptions['your_custom_option'] = $yourCustomValue;
    $orderItem->setProductOptions($existentOptions);
  • 如果您需要在打印文档中显示自定义选项,则需要将自定义选项添加到选项的特殊选项中,该选项具有在前端、pdf 文档、项目列表中显示其值的结构
    $existentOptions = $orderItem->getProductOptions();
    if (!isset($existentOptions['additional_options'])) {
    // If special options of options array is set before, create it.
    $existentOptions['additional_options'] = array();
    }
    // Adding visible options value
    $existentOptions['additional_options'][] = array(
    'label' => 'Your Option Label',
    'value' => 'Your Option Value',
    // The last one that is optional (if not set, value is used)
    'print_value' => 'Your Option Value shown in printed documents'
    );
    $orderItem->setProductOptions($existentOptions);

  • 如果您需要一个对客户可见的选项和您的代码所需的另一个选项,则这两种方法甚至可以结合使用。

    也不要忘记在您进行修改后保存您的订单/订单项目。

    咨询

    如果您保存订单并且没有修改订单模型本身,您至少需要更改其中的一些数据,以强制订单模型保存所有子实体。为了使这成为可能,您甚至可以设置一些不存在的属性。

    不会调用保存操作的情况:
    $order->load($id);
    $orderItem->getItemById($itemId);
    $orderItem->setSomething(111);
    $order->save(); // Order Item will not be saved!!

    将调用保存操作的情况:
    $order->load($id);
    $orderItem->getItemById($itemId);
    $orderItem->setSomething(111);
    $order->setSomeNonExistentProperty(true);
    $order->save(); // Now it will be saved

    玩得开心 Magento 开发

    关于magento - 如何更新 Magento 中的订单项自定义选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687630/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com