Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions
Products Class Reference
Inheritance diagram for Products:
ResolverInterface

Public Member Functions

 __construct (Builder $searchCriteriaBuilder, Search $searchQuery, Filter $filterQuery, SearchFilter $searchFilter)
 
 resolve (Field $field, $context, ResolveInfo $info, array $value=null, array $args=null)
 

Detailed Description

Products field resolver, used for GraphQL request processing.

Definition at line 23 of file Products.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( Builder  $searchCriteriaBuilder,
Search  $searchQuery,
Filter  $filterQuery,
SearchFilter  $searchFilter 
)
Parameters
Builder$searchCriteriaBuilder
Search$searchQuery
Filter$filterQuery
SearchFilter$searchFilter

Definition at line 51 of file Products.php.

56  {
57  $this->searchCriteriaBuilder = $searchCriteriaBuilder;
58  $this->searchQuery = $searchQuery;
59  $this->filterQuery = $filterQuery;
60  $this->searchFilter = $searchFilter;
61  }

Member Function Documentation

◆ resolve()

resolve ( Field  $field,
  $context,
ResolveInfo  $info,
array  $value = null,
array  $args = null 
)

Fetches the data from persistence models and format it according to the GraphQL schema.

Parameters
\Magento\Framework\GraphQl\Config\Element\Field$field
ContextInterface$context
ResolveInfo$info
array | null$value
array | null$args
Exceptions

Implements ResolverInterface.

Definition at line 66 of file Products.php.

72  {
73  $searchCriteria = $this->searchCriteriaBuilder->build($field->getName(), $args);
74  $searchCriteria->setCurrentPage($args['currentPage']);
75  $searchCriteria->setPageSize($args['pageSize']);
76  if (!isset($args['search']) && !isset($args['filter'])) {
77  throw new GraphQlInputException(
78  __("'search' or 'filter' input argument is required.")
79  );
80  } elseif (isset($args['search'])) {
81  $layerType = Resolver::CATALOG_LAYER_SEARCH;
82  $this->searchFilter->add($args['search'], $searchCriteria);
83  $searchResult = $this->searchQuery->getResult($searchCriteria, $info);
84  } else {
86  $searchResult = $this->filterQuery->getResult($searchCriteria, $info);
87  }
88  //possible division by 0
89  if ($searchCriteria->getPageSize()) {
90  $maxPages = ceil($searchResult->getTotalCount() / $searchCriteria->getPageSize());
91  } else {
92  $maxPages = 0;
93  }
94 
95  $currentPage = $searchCriteria->getCurrentPage();
96  if ($searchCriteria->getCurrentPage() > $maxPages && $searchResult->getTotalCount() > 0) {
97  $currentPage = new GraphQlInputException(
98  __(
99  'currentPage value %1 specified is greater than the number of pages available.',
100  [$maxPages]
101  )
102  );
103  }
104 
105  $data = [
106  'total_count' => $searchResult->getTotalCount(),
107  'items' => $searchResult->getProductsSearchResult(),
108  'page_info' => [
109  'page_size' => $searchCriteria->getPageSize(),
110  'current_page' => $currentPage
111  ],
112  'layer_type' => $layerType
113  ];
114 
115  return $data;
116  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
__()
Definition: __.php:13
$searchCriteria
foreach( $_productCollection as $_product)() ?>" class $info
Definition: listing.phtml:52

The documentation for this class was generated from the following file: