web-dev-qa-db-ja.com

Magento 2は、カスタムオプションを使用してプログラムでカートに製品を追加します

カートに製品を追加するためのテストスクリプトファイルを1つ作成しましたカスタムオプション付き。プログラムを使用して、カート内の製品の選択されたカスタムオプションを表示したい。

以下のコードを確認してください。

$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配列でカスタムオプションをすでに渡しました。しかし、それでもエラーが表示されます。

選択したカスタムオプションを使用して商品をカートに追加するにはどうすればよいですか?

私を助けてください。

どんな助けでもいただければ幸いです。

4
Niks

私はこの問題の解決策を手に入れました。これが私の更新されたコードです。

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

このコードは私にとってはうまくいきます。

4
Niks

コードを置き換えてください:

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