1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\ConfigurableProduct\Helper\Product\Options;
- use Magento\Catalog\Api\Data\ProductInterface;
- use Magento\ConfigurableProduct\Api\Data\OptionInterface;
- use Magento\ConfigurableProduct\Model\Product\Type\Configurable;
- use Magento\ConfigurableProduct\Api\Data\OptionValueInterfaceFactory;
- use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
- /**
- * Class Loader
- */
- class Loader
- {
- /**
- * @var OptionValueInterfaceFactory
- */
- private $optionValueFactory;
- /**
- * @var JoinProcessorInterface
- */
- private $extensionAttributesJoinProcessor;
- /**
- * ReadHandler constructor
- *
- * @param OptionValueInterfaceFactory $optionValueFactory
- * @param JoinProcessorInterface $extensionAttributesJoinProcessor
- */
- public function __construct(
- OptionValueInterfaceFactory $optionValueFactory,
- JoinProcessorInterface $extensionAttributesJoinProcessor
- ) {
- $this->optionValueFactory = $optionValueFactory;
- $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
- }
- /**
- * @param ProductInterface $product
- * @return OptionInterface[]
- */
- public function load(ProductInterface $product)
- {
- $options = [];
- /** @var Configurable $typeInstance */
- $typeInstance = $product->getTypeInstance();
- $attributeCollection = $typeInstance->getConfigurableAttributeCollection($product);
- $this->extensionAttributesJoinProcessor->process($attributeCollection);
- foreach ($attributeCollection as $attribute) {
- $values = [];
- $attributeOptions = $attribute->getOptions();
- if (is_array($attributeOptions)) {
- foreach ($attributeOptions as $option) {
- /** @var \Magento\ConfigurableProduct\Api\Data\OptionValueInterface $value */
- $value = $this->optionValueFactory->create();
- $value->setValueIndex($option['value_index']);
- $values[] = $value;
- }
- }
- $attribute->setValues($values);
- $options[] = $attribute;
- }
- return $options;
- }
- }
|