![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-configurable-product/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\ConfigurableProduct\Model; use Magento\Catalog\Model\Product; use Magento\ConfigurableProduct\Model\Product\Type\Configurable\Attribute; /** * Class ConfigurableAttributeData * @api * @since 100.0.2 */ class ConfigurableAttributeData { /** * Get product attributes * * @param Product $product * @param array $options * @return array */ public function getAttributesData(Product $product, array $options = []) { $defaultValues = []; $attributes = []; foreach ($product->getTypeInstance()->getConfigurableAttributes($product) as $attribute) { $attributeOptionsData = $this->getAttributeOptionsData($attribute, $options); if ($attributeOptionsData) { $productAttribute = $attribute->getProductAttribute(); $attributeId = $productAttribute->getId(); $attributes[$attributeId] = [ 'id' => $attributeId, 'code' => $productAttribute->getAttributeCode(), 'label' => $productAttribute->getStoreLabel($product->getStoreId()), 'options' => $attributeOptionsData, 'position' => $attribute->getPosition(), ]; $defaultValues[$attributeId] = $this->getAttributeConfigValue($attributeId, $product); } } return [ 'attributes' => $attributes, 'defaultValues' => $defaultValues, ]; } /** * @param Attribute $attribute * @param array $config * @return array */ protected function getAttributeOptionsData($attribute, $config) { $attributeOptionsData = []; foreach ($attribute->getOptions() as $attributeOption) { $optionId = $attributeOption['value_index']; $attributeOptionsData[] = [ 'id' => $optionId, 'label' => $attributeOption['label'], 'products' => isset($config[$attribute->getAttributeId()][$optionId]) ? $config[$attribute->getAttributeId()][$optionId] : [], ]; } return $attributeOptionsData; } /** * @param int $attributeId * @param Product $product * @return mixed|null */ protected function getAttributeConfigValue($attributeId, $product) { return $product->hasPreconfiguredValues() ? $product->getPreconfiguredValues()->getData('super_attribute/' . $attributeId) : null; } }