Site icon MageComp Blog

Magento 2: How to Programmatically Add Configurable Products to Cart

Magento 2 How to Programmatically Add Configurable Products to Cart

Hello Magento Friends,

In today’s blog, we will learn about How to Programmatically Add Configurable Products to Cart in Magento 2.

Adding products to the cart programmatically is a common requirement when building custom functionalities in Magento 2. This is especially important when dealing with configurable products, as these require not only the main product information but also the associated child product (simple product) based on selected attributes like size, color, etc.

Magento 2: Get Simple Product from Configurable Product before Add to Cart

In this blog, we’ll guide you through the process of programmatically adding configurable products to the cart in Magento 2.

Steps to Programmatically Add Configurable Products to Cart in Magento 2:

Step 1: We need to create a “configurable_addtocart.php“ file inside the Magento root directory.

magento_root_directory\configurable_addtocart.php

Then add the code as follows

<?php
	use Magento\Framework\AppInterface;

	try {
	    require_once __DIR__ . '/app/bootstrap.php';

	} catch (\Exception $e) {
	    echo 'Autoload error: ' . $e->getMessage();
	    exit(1);
	}
	try{
		$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
		$objectManager = $bootstrap->getObjectManager();
		$appState = $objectManager->get('\Magento\Framework\App\State');
		$appState->setAreaCode('frontend');

		$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
		$cart = $objectManager->get('Magento\Checkout\Model\Cart');
		$productId = 10; // set Configurable Product Id
		$product = $objectManager->create('Magento\Catalog\Model\ProductFactory')->create()->load($productId);
		$_children = $product->getTypeInstance()->getUsedProducts($product);
	    	foreach ($_children as $child){
		$childId = $child->getID();
			$childProduct = $objectManager->create('Magento\Catalog\Model\ProductFactory')->create()->load($childId);
			$params = [];
			$params['product'] = $product->getId();
			$params['qty'] = 2;
			$options = [];
			$productAttributeOptions = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product);
			foreach($productAttributeOptions as $option){
			    $options[$option['attribute_id']] =  $childProduct->getData($option['attribute_code']);
			}
			$params['super_attribute'] = $options;
			
			/*Add product to cart */
			$product = $objectManager->create('Magento\Catalog\Model\ProductFactory')->create()->load($product->getId());
			$cart->addProduct($product, $params);
			$cart->save();
	    	}
		echo "Product Added Successfully";
	}
	catch(\Exception $e){
		print_r($e->getMessage());
	}
?>

Conclusion:

By following the above step, you can effectively add configurable products to the cart programmatically in your Magento 2 store. If you have any doubts, let me know through the comment box. Share the tutorial with your friends and stay tuned with us for more.

Happy Coding!

Exit mobile version