【问题标题】:Magento 2 add product to cart programmatically with custom optionsMagento 2 使用自定义选项以编程方式将产品添加到购物车
【发布时间】:2018-06-26 03:35:31
【问题描述】:

我创建了一个测试脚本文件,用于将产品添加到购物车带有自定义选项。我想以编程方式在购物车中显示选定的产品自定义选项。

请检查我的以下代码:

$productId = 25;
$product = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);
$cart = $objectManager->create('Magento\Checkout\Model\Cart');  
$params = array();      
$params['options[469]'] = 459;
$params['qty'] = 1;
$params['product'] = 25

$cart->addProduct($product, $params);
$cart->save();

使用 objectmanager 我创建了购物车和产品对象。当我在浏览器中触发此脚本时,它显示错误:

Magento\Framework\Exception\LocalizedException:请指定 产品的必需选项。

我已经在 params 数组中传递了自定义选项。但它仍然显示错误。

如何使用选定的自定义选项将产品添加到购物车?

请帮帮我。

任何帮助将不胜感激。

【问题讨论】:

    标签: php magento2


    【解决方案1】:

    我已经解决了这个问题。 这是我更新的代码。

    $productId = 127;
    $product = $obj->create('\Magento\Catalog\Model\Product')->load($productId);
    
    $cart = $obj->create('Magento\Checkout\Model\Cart');    
    $params = array();      
    $options = array();
    $params['qty'] = 1;
    $params['product'] = 127;
    
    foreach ($product->getOptions() as $o) 
    {       
        foreach ($o->getValues() as $value) 
        {
            $options[$value['option_id']] = $value['option_type_id'];
    
        }           
    }
    
    $params['options'] = $options;
    $cart->addProduct($product, $params);
    $cart->save();
    

    这段代码对我有用。

    【讨论】:

    • 你把这段代码放在哪里?我正在使用自定义模块来创建自定义产品(在图像上添加框架等)并将代码添加到同一文件中,然后重定向到购物车。即使我将限制增加到 2GB,它也会给我内存耗尽的错误。我能够在后端将我的自定义产品创建为可配置产品,但无法在此过程中将其添加到购物车。我应该在购物车页面上添加此代码吗?请建议!
    【解决方案2】:

    请替换您的代码:

    $productId = 25;
    $product = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);
    $cart = $objectManager->create('Magento\Checkout\Model\Cart');  
    $params = array();      
    $params['options[469]'] = 459;
    $params['qty'] = 1;
    $params['product'] = 25
    
    $cart->addProduct($product, $params);
    $cart->save();
    

    替换为

    $productId = 25;
    $product = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);
    $cart = $objectManager->create('Magento\Checkout\Model\Cart');  
    $formKey = $objectManager->create('\Magento\Framework\Data\Form\FormKey')->getFormKey();  
    $option = array('469'=>459);
    
    $params = array(
                        'form_key' => $formKey,
                        'product' => $productId, //product Id
                        'qty'   =>1, //quantity of product                
                        'options' => $option
                        );
    $cart->addProduct($product, $params);
    $cart->save();
    

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多