6 declare(strict_types=1);
27 private $productDataProvider;
32 private $valueFactory;
37 private $fieldTranslator;
49 $this->productDataProvider = $productDataProvider;
50 $this->valueFactory = $valueFactory;
51 $this->fieldTranslator = $fieldTranslator;
59 if (!isset(
$value[
'sku'])) {
62 $this->productDataProvider->addProductSku(
$value[
'sku']);
64 $this->productDataProvider->addEavAttributes(
$fields);
67 $data = $this->productDataProvider->getProductBySku(
$value[
'sku']);
77 foreach (
$productModel->getCustomAttributes() as $customAttribute) {
78 if (!isset(
$data[$customAttribute->getAttributeCode()])) {
79 $data[$customAttribute->getAttributeCode()] = $customAttribute->getValue();
87 return $this->valueFactory->create(
$result);
96 private function getProductFields(ResolveInfo
$info) : array
99 foreach (
$info->fieldNodes as $node) {
100 if ($node->name->value !==
'product') {
103 foreach ($node->selectionSet->selections as $selectionNode) {
104 if ($selectionNode->kind ===
'InlineFragment') {
105 foreach ($selectionNode->selectionSet->selections as $inlineSelection) {
106 if ($inlineSelection->kind ===
'InlineFragment') {
109 $fieldNames[] = $this->fieldTranslator->translate($inlineSelection->name->value);
113 $fieldNames[] = $this->fieldTranslator->translate($selectionNode->name->value);
__construct(ProductDataProvider $productDataProvider, ValueFactory $valueFactory, FieldTranslator $fieldTranslator)
foreach( $_productCollection as $_product)() ?>" class $info
resolve(Field $field, $context, ResolveInfo $info, array $value=null, array $args=null)