Magento 2使用自定义选项

时间:2018-01-17 09:45:56

标签: php magento2

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

请检查我的以下代码:

$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数组中传递了自定义选项。但它仍然显示错误。

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

请帮帮我。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:4)

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

$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();

这段代码对我有用。

答案 1 :(得分:3)

请替换您的代码:

$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();