I have products with custom options. One of these products options must be updated just after product has been added to cart.
I then created an event launched just after checkout_cart_add_product_complete
.
My observer is well called :
public function execute(\Magento\Framework\Event\Observer $observer) {
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cart = $objectManager->get('\Magento\Checkout\Model\Cart');
$items = $cart->getQuote()->getAllItems();
foreach ($items as $item)
{
$options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
$customOptions = $options['options'];
if (!empty($customOptions))
{
foreach ($customOptions as $key=>$option)
{
if ($option['label']=="foo")
{
$customOptions[$key]['value']="bar";
}
}
$item->setProductOptions($customOptions);
$item->save();
}
}
}
But when Cart is displayed, the product option has not been changed.
Thank you for your help,