Skip to content

Commit 23c9822

Browse files
author
vitaliyboyko
committed
graphQl-256: fixed get attribute codes method
1 parent e22d32d commit 23c9822

File tree

1 file changed

+9
-14
lines changed
  • app/code/Magento/ConfigurableProductGraphQl/Model/Variant

1 file changed

+9
-14
lines changed

app/code/Magento/ConfigurableProductGraphQl/Model/Variant/Collection.php

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99

1010
use Magento\Catalog\Api\Data\ProductInterface;
1111
use Magento\Catalog\Model\Product;
12-
use Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable\Product\CollectionFactory;
13-
use Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable\Product\Collection as ChildCollection;
1412
use Magento\Catalog\Model\ProductFactory;
13+
use Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable\Product\Collection as ChildCollection;
14+
use Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable\Product\CollectionFactory;
1515
use Magento\Framework\EntityManager\MetadataPool;
1616
use Magento\Framework\Api\SearchCriteriaBuilder;
1717
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product as DataProvider;
@@ -143,7 +143,6 @@ private function fetch() : array
143143

144144
$linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField();
145145
foreach ($this->parentProducts as $product) {
146-
147146
$attributeData = $this->getAttributesCodes($product);
148147
/** @var ChildCollection $childCollection */
149148
$childCollection = $this->childCollectionFactory->create();
@@ -169,24 +168,20 @@ private function fetch() : array
169168
}
170169

171170
/**
172-
* Get attributes codes
171+
* Get attributes code
173172
*
174-
* @param Product $currentProduct
173+
* @param \Magento\Catalog\Model\Product $currentProduct
175174
* @return array
176175
*/
177176
private function getAttributesCodes(Product $currentProduct): array
178177
{
179178
$attributeCodes = [];
180-
$attributes = $currentProduct->getAttributes();
181-
foreach ($attributes as $key => $attribute) {
182-
$isVisible = (int)$attribute->getIsVisibleOnFront();
183-
if (!$isVisible) {
184-
continue;
185-
}
186-
if (!in_array($key, $attributeCodes)) {
187-
continue;
179+
$allowAttributes = $currentProduct->getTypeInstance()->getConfigurableAttributes($currentProduct);
180+
foreach ($allowAttributes as $attribute) {
181+
$productAttribute = $attribute->getProductAttribute();
182+
if (!\in_array($productAttribute->getAttributeCode(), $attributeCodes)) {
183+
$attributeCodes[] = $productAttribute->getAttributeCode();
188184
}
189-
$attributeCodes[] = $key;
190185
}
191186

192187
return $attributeCodes;

0 commit comments

Comments
 (0)