/** * {@inheritdoc} */ public function convertToProductOption(DataObject $request) { $superAttribute = $request->getSuperAttribute(); if (!empty($superAttribute) && is_array($superAttribute)) { $data = []; foreach ($superAttribute as $optionId => $optionValue) { /** @var ConfigurableItemOptionValueInterface $option */ $option = $this->itemOptionValueFactory->create(); $option->setOptionId($optionId); $option->setOptionValue($optionValue); $data[] = $option; } return ['configurable_item_options' => $data]; } return []; }
/** * {@inheritdoc} */ public function processOptions(CartItemInterface $cartItem) { $attributesOption = $cartItem->getProduct()->getCustomOption('attributes'); $selectedConfigurableOptions = unserialize($attributesOption->getValue()); if (is_array($selectedConfigurableOptions)) { $configurableOptions = []; foreach ($selectedConfigurableOptions as $optionId => $optionValue) { /** @var \Magento\ConfigurableProduct\Api\Data\ConfigurableItemOptionValueInterface $option */ $option = $this->itemOptionValueFactory->create(); $option->setOptionId($optionId); $option->setOptionValue($optionValue); $configurableOptions[] = $option; } $productOption = $cartItem->getProductOption() ? $cartItem->getProductOption() : $this->productOptionFactory->create(); /** @var \Magento\Quote\Api\Data\ProductOptionExtensionInterface $extensibleAttribute */ $extensibleAttribute = $productOption->getExtensionAttributes() ? $productOption->getExtensionAttributes() : $this->extensionFactory->create(); $extensibleAttribute->setConfigurableItemOptions($configurableOptions); $productOption->setExtensionAttributes($extensibleAttribute); $cartItem->setProductOption($productOption); } return $cartItem; }