|
14 | 14 | use Magento\CatalogGraphQl\Model\Resolver\Products\SearchResultFactory;
|
15 | 15 | use Magento\Framework\Api\Search\SearchCriteriaInterface;
|
16 | 16 | use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
|
| 17 | +use Magento\Framework\Phrase; |
17 | 18 | use Magento\Search\Api\SearchInterface;
|
18 | 19 | use Magento\Search\Model\Search\PageSizeProvider;
|
19 | 20 |
|
@@ -112,7 +113,11 @@ public function getResult(
|
112 | 113 | $productArray[$product->getId()] = $product->getData();
|
113 | 114 | $productArray[$product->getId()]['model'] = $product;
|
114 | 115 | foreach ($queryFields as $field) {
|
115 |
| - $productArray[$product->getId()][$field] = $this->getAttributeLabel($product, $field); |
| 116 | + $productArray[$product->getId()][$field] = $this->getAttributeValue( |
| 117 | + $product, |
| 118 | + $productArray, |
| 119 | + $field |
| 120 | + ); |
116 | 121 | }
|
117 | 122 | }
|
118 | 123 |
|
@@ -144,19 +149,25 @@ private function buildSearchCriteria(array $args, ResolveInfo $info): SearchCrit
|
144 | 149 | return $searchCriteria;
|
145 | 150 | }
|
146 | 151 |
|
| 152 | + |
147 | 153 | /**
|
148 |
| - * Get frontend label of product attribute |
| 154 | + * Get product attribute value |
149 | 155 | *
|
150 | 156 | * @param Product $product
|
| 157 | + * @param $productArray |
151 | 158 | * @param $field
|
152 | 159 | *
|
153 |
| - * @return mixed |
| 160 | + * @return string|null |
154 | 161 | */
|
155 |
| - private function getAttributeLabel(Product $product, $field) |
| 162 | + private function getAttributeValue(Product $product, $productArray, $field) |
156 | 163 | {
|
157 |
| - $attribute = $product->getResource()->getAttribute($field); |
158 |
| - if ($attribute) { |
159 |
| - return $attribute->getFrontend()->getValue($product); |
| 164 | + if ($attribute = $product->getResource()->getAttribute($field)) { |
| 165 | + $attributeValue = $attribute->getFrontend()->getValue($product); |
| 166 | + if ($attributeValue && !($attributeValue instanceof Phrase) ) { |
| 167 | + return $attributeValue; |
| 168 | + } else { |
| 169 | + return isset($productArray[$product->getId()][$field])? $productArray[$product->getId()][$field] : null; |
| 170 | + } |
160 | 171 | }
|
161 | 172 | }
|
162 | 173 | }
|
0 commit comments