diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute.php
index f04609f91c86d..9c1212667acf3 100644
--- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute.php
+++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute.php
@@ -8,7 +8,7 @@
namespace Magento\CatalogGraphQl\Model\Resolver\Product;
use Magento\Catalog\Model\Product;
-use Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextareaAttribute\FormatFactory;
+use Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextAttribute\FormatList;
use Magento\Framework\GraphQl\Config\Element\Field;
use Magento\Framework\GraphQl\Query\Resolver\Value;
use Magento\Framework\GraphQl\Query\Resolver\ValueFactory;
@@ -18,9 +18,12 @@
/**
* Resolve rendered content for attributes where HTML content is allowed
*/
-class ProductTextareaAttribute implements ResolverInterface
+class ProductTextAttribute implements ResolverInterface
{
- const DEFAULT_CONTENT_FORMAT_IDENTIFIER = 'html';
+ /**
+ * @var FormatList
+ */
+ private $formatList;
/**
* @var ValueFactory
@@ -28,20 +31,20 @@ class ProductTextareaAttribute implements ResolverInterface
private $valueFactory;
/**
- * @var FormatFactory
+ * @var string
*/
- private $formatFactory;
+ private $defaultFormat = 'html';
/**
* @param ValueFactory $valueFactory
- * @param FormatFactory $formatFactory
+ * @param FormatList $formatFactory
*/
public function __construct(
ValueFactory $valueFactory,
- FormatFactory $formatFactory
+ FormatList $formatFactory
) {
$this->valueFactory = $valueFactory;
- $this->formatFactory = $formatFactory;
+ $this->formatList = $formatFactory;
}
/**
@@ -55,22 +58,16 @@ public function resolve(
array $args = null
): Value {
if (!isset($value['model'])) {
- $result = function () {
- return null;
- };
+ $result = [];
return $this->valueFactory->create($result);
}
/* @var $product Product */
$product = $value['model'];
$fieldName = $field->getName();
- $formatIdentifier = $args['format'] ?? self::DEFAULT_CONTENT_FORMAT_IDENTIFIER;
- $format = $this->formatFactory->create($formatIdentifier);
- $attribute = ['content' => $format->getContent($product, $fieldName)];
-
- $result = function () use ($attribute) {
- return $attribute;
- };
+ $formatIdentifier = $args['format'] ?? $this->defaultFormat;
+ $format = $this->formatList->create($formatIdentifier);
+ $result = ['content' => $format->getContent($product, $fieldName)];
return $this->valueFactory->create($result);
}
diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/FormatInterface.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/FormatInterface.php
index fae685b75c060..2cf702bf18466 100644
--- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/FormatInterface.php
+++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/FormatInterface.php
@@ -5,7 +5,7 @@
*/
declare(strict_types=1);
-namespace Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextareaAttribute;
+namespace Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextAttribute;
use Magento\Catalog\Model\Product as ModelProduct;
diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/FormatList.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/FormatList.php
index 97e0be3763f1d..2e2f21d643092 100644
--- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/FormatList.php
+++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/FormatList.php
@@ -9,35 +9,39 @@
use Magento\Framework\ObjectManagerInterface;
-class FormatFactory
+class FormatList
{
/**
* @var ObjectManagerInterface
*/
private $objectManager;
+ /**
+ * @var string
+ */
+ private $formats;
+
/**
* @param ObjectManagerInterface $objectManager
+ * @param array $formats
*/
- public function __construct(ObjectManagerInterface $objectManager)
- {
+ public function __construct(
+ ObjectManagerInterface $objectManager,
+ array $formats
+ ) {
$this->objectManager = $objectManager;
+ $this->formats = $formats;
}
/**
* @param string $formatIdentifier
- * @param array $data
* @return FormatInterface
*/
- public function create(string $formatIdentifier, $data = []) : FormatInterface
+ public function create(string $formatIdentifier) : FormatInterface
{
- $formatClassName = 'Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextareaAttribute\\' . ucfirst($formatIdentifier);
- $formatInstance = $this->objectManager->create($formatClassName, $data);
- if (false == $formatInstance instanceof FormatInterface) {
- throw new \InvalidArgumentException(
- $formatInstance . ' is not instance of \Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextareaAttribute\FormatInterface'
- );
- }
+ $formatClassName = 'Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextAttribute\\' . ucfirst($formatIdentifier);
+ $formatInstance = $this->objectManager->get($formatClassName);
+
return $formatInstance;
}
}
diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/Html.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/Html.php
index 8201c40427dc9..75c29a3f78fac 100644
--- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/Html.php
+++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductTextAttribute/Html.php
@@ -5,7 +5,7 @@
*/
declare(strict_types=1);
-namespace Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextareaAttribute;
+namespace Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextAttribute;
use Magento\Framework\GraphQl\Query\Resolver\ValueFactory;
use Magento\Catalog\Helper\Output as OutputHelper;
diff --git a/app/code/Magento/CatalogGraphQl/etc/graphql/di.xml b/app/code/Magento/CatalogGraphQl/etc/graphql/di.xml
index 68a292ede6b4a..8d4ca97001d3d 100644
--- a/app/code/Magento/CatalogGraphQl/etc/graphql/di.xml
+++ b/app/code/Magento/CatalogGraphQl/etc/graphql/di.xml
@@ -63,6 +63,13 @@
Magento\Catalog\Model\Api\SearchCriteria\ProductCollectionProcessor
+
+
+
+ - Magento\CatalogGraphQl\Model\Resolver\Product\ProductTextAttribute\Html
+
+
+
diff --git a/app/code/Magento/CatalogGraphQl/etc/schema.graphqls b/app/code/Magento/CatalogGraphQl/etc/schema.graphqls
index a9c4a1b4bd8ae..3f3282ed5f529 100644
--- a/app/code/Magento/CatalogGraphQl/etc/schema.graphqls
+++ b/app/code/Magento/CatalogGraphQl/etc/schema.graphqls
@@ -248,8 +248,8 @@ interface ProductInterface @typeResolver(class: "Magento\\CatalogGraphQl\\Model\
id: Int @doc(description: "The ID number assigned to the product") @resolver(class: "Magento\\CatalogGraphQl\\Model\\Resolver\\Product\\EntityIdToId")
name: String @doc(description: "The product name. Customers use this name to identify the product.")
sku: String @doc(description: "A number or code assigned to a product to identify the product, options, price, and manufacturer")
- description: ProductTextareaAttribute @doc(description: "Detailed information about the product. The value can include simple HTML tags.")
- short_description: ProductTextareaAttribute @doc(description: "A short description of the product. Its use depends on the theme.")
+ description: ProductTextAttribute @doc(description: "Detailed information about the product. The value can include simple HTML tags.")
+ short_description: ProductTextAttribute @doc(description: "A short description of the product. Its use depends on the theme.")
special_price: Float @doc(description: "The discounted price of the product")
special_from_date: String @doc(description: "The beginning date that a product has a special price")
special_to_date: String @doc(description: "The end date that a product has a special price")
@@ -552,9 +552,9 @@ type SortFields @doc(description: "SortFields contains a default value for sort
options: [SortField] @doc(description: "Available sort fields")
}
-type ProductTextareaAttribute {
+type ProductTextAttribute {
content (
- format: String! @doc(description: "The format of content")
-): String
- @resolver(class: "\\Magento\\CatalogGraphQl\\Model\\Resolver\\Product\\ProductTextareaAttribute")
+ format: String @doc(description: "The format of content")
+): String @doc(description: "The format of content")
+ @resolver(class: "Magento\\CatalogGraphQl\\Model\\Resolver\\Product\\ProductTextAttribute")
}