Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ServiceSource.php
Go to the documentation of this file.
1 <?php
7 
12 
13 class ServiceSource implements DataInterface
14 {
18  private $objectManager;
19 
23  private $service;
24 
28  private $searchCriteriaBuilder;
29 
35  public function __construct(
36  ObjectManagerInterface $objectManager,
37  SearchCriteriaBuilder $searchCriteriaBuilder,
38  $service
39  ) {
40  $this->objectManager = $objectManager;
41  $this->searchCriteriaBuilder = $searchCriteriaBuilder;
42  $this->service = $service;
43  }
44 
48  public function getData(array $fieldsData)
49  {
50  $service = $this->getService();
51 
52  $searchCriteria = $this->searchCriteriaBuilder->create();
53 
55  $list = $service->getList($searchCriteria);
56 
57  return $this->getRequestedFields($list, $fieldsData);
58  }
59 
66  private function getRequestedFields(SearchResults $list, array $fields)
67  {
68  $requestedData = [];
69  foreach ($list->getItems() as $key => $item) {
70  foreach (array_keys($fields) as $fieldName) {
71  if (!isset($item[$fieldName])) {
72  throw new NotFoundException(__("Field '%1' not found", $fieldName));
73  }
74 
75  $requestedData[$key][$fieldName] = $item[$fieldName];
76  }
77  }
78  return $requestedData;
79  }
80 
84  private function getService()
85  {
86  return $this->objectManager->get($this->service);
87  }
88 }
$objectManager
Definition: bootstrap.php:17
$fields
Definition: details.phtml:14
__()
Definition: __.php:13
$searchCriteria
$searchCriteriaBuilder
__construct(ObjectManagerInterface $objectManager, SearchCriteriaBuilder $searchCriteriaBuilder, $service)