Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
quote_with_bundle_and_options.php
Go to the documentation of this file.
1 <?php
7 declare(strict_types=1);
8 
10 
11 require __DIR__ . 'product_with_multiple_options.php';
12 
13 $objectManager = Bootstrap::getObjectManager();
14 
16 $product = $objectManager->create(\Magento\Catalog\Model\Product::class);
17 $product->load(3);
18 
20 $typeInstance = $product->getTypeInstance();
21 $typeInstance->setStoreFilter($product->getStoreId(), $product);
22 $optionCollection = $typeInstance->getOptionsCollection($product);
23 
26 foreach ($optionCollection as $option) {
28  $selectionsCollection = $typeInstance->getSelectionsCollection([$option->getId()], $product);
29  if ($option->isMultiSelection()) {
30  $bundleOptions[$option->getId()] = array_column($selectionsCollection->toArray(), 'selection_id');
31  } else {
32  $bundleOptions[$option->getId()] = $selectionsCollection->getFirstItem()->getSelectionId();
33  }
34  $bundleOptionsQty[$option->getId()] = 1;
35 }
36 
37 $requestInfo = new \Magento\Framework\DataObject(
38  [
39  'product' => $product->getId(),
40  'bundle_option' => $bundleOptions,
41  'bundle_option_qty' => $bundleOptionsQty,
42  'qty' => 1,
43  ]
44 );
45 
47 $cart = Bootstrap::getObjectManager()->create(\Magento\Checkout\Model\Cart::class);
48 $cart->addProduct($product, $requestInfo);
49 $cart->getQuote()->setReservedOrderId('test_cart_with_bundle_and_options');
50 $cart->save();
51 
53 $objectManager = Bootstrap::getObjectManager();
54 $objectManager->removeSharedInstance(\Magento\Checkout\Model\Session::class);
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
foreach($optionCollection as $option) $requestInfo