/** * @return array */ public function resolveAttributeColumns() { if (empty($this->attributesFields)) { $attributes = $this->attributeRepository->findAll(); $currencyCodes = $this->currencyRepository->getActivatedCurrencyCodes(); $values = $this->valuesResolver->resolveEligibleValues($attributes); foreach ($values as $value) { if (null !== $value['locale'] && null !== $value['scope']) { $field = sprintf('%s-%s-%s', $value['attribute'], $value['locale'], $value['scope']); } elseif (null !== $value['locale']) { $field = sprintf('%s-%s', $value['attribute'], $value['locale']); } elseif (null !== $value['scope']) { $field = sprintf('%s-%s', $value['attribute'], $value['scope']); } else { $field = $value['attribute']; } if (AttributeTypes::PRICE_COLLECTION === $value['type']) { $this->attributesFields[] = $field; foreach ($currencyCodes as $currencyCode) { $currencyField = sprintf('%s-%s', $field, $currencyCode); $this->attributesFields[] = $currencyField; } } elseif (AttributeTypes::METRIC === $value['type']) { $this->attributesFields[] = $field; $metricField = sprintf('%s-%s', $field, 'unit'); $this->attributesFields[] = $metricField; } else { $this->attributesFields[] = $field; } } } return $this->attributesFields; }
/** * {@inheritdoc} */ public function addAttributeToProduct(ProductInterface $product, AttributeInterface $attribute) { $requiredValues = $this->valuesResolver->resolveEligibleValues([$attribute]); foreach ($requiredValues as $value) { $this->addProductValue($product, $attribute, $value['locale'], $value['scope']); } }