Ejemplo n.º 1
0
 /**
  * Load Block data collection by given search criteria
  *
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  * @param \Magento\Framework\Api\SearchCriteriaInterface $criteria
  * @return \Magento\Cms\Model\ResourceModel\Block\Collection
  */
 public function getList(\Magento\Framework\Api\SearchCriteriaInterface $criteria)
 {
     $searchResults = $this->searchResultsFactory->create();
     $searchResults->setSearchCriteria($criteria);
     $collection = $this->blockCollectionFactory->create();
     foreach ($criteria->getFilterGroups() as $filterGroup) {
         foreach ($filterGroup->getFilters() as $filter) {
             if ($filter->getField() === 'store_id') {
                 $collection->addStoreFilter($filter->getValue(), false);
                 continue;
             }
             $condition = $filter->getConditionType() ?: 'eq';
             $collection->addFieldToFilter($filter->getField(), [$condition => $filter->getValue()]);
         }
     }
     $searchResults->setTotalCount($collection->getSize());
     $sortOrders = $criteria->getSortOrders();
     if ($sortOrders) {
         foreach ($sortOrders as $sortOrder) {
             $collection->addOrder($sortOrder->getField(), $sortOrder->getDirection() == SortOrder::SORT_ASC ? 'ASC' : 'DESC');
         }
     }
     $collection->setCurPage($criteria->getCurrentPage());
     $collection->setPageSize($criteria->getPageSize());
     $blocks = [];
     /** @var Block $blockModel */
     foreach ($collection as $blockModel) {
         $blockData = $this->dataBlockFactory->create();
         $this->dataObjectHelper->populateWithArray($blockData, $blockModel->getData(), 'Magento\\Cms\\Api\\Data\\BlockInterface');
         $blocks[] = $this->dataObjectProcessor->buildOutputDataArray($blockData, 'Magento\\Cms\\Api\\Data\\BlockInterface');
     }
     $searchResults->setItems($blocks);
     return $searchResults;
 }
Ejemplo n.º 2
0
 /**
  * Test search \Magento\Cms\Api\Data\BlockInterface
  */
 public function testSearch()
 {
     $blockTitle = 'Block title';
     $blockIdentifier = 'block-title';
     /** @var  \Magento\Cms\Api\Data\BlockInterface $blockDataObject */
     $blockDataObject = $this->blockFactory->create();
     $blockDataObject->setTitle($blockTitle)->setIdentifier($blockIdentifier);
     $this->currentBlock = $this->blockRepository->save($blockDataObject);
     $filterBuilder = Bootstrap::getObjectManager()->create('Magento\\Framework\\Api\\FilterBuilder');
     $searchCriteriaBuilder = Bootstrap::getObjectManager()->create('Magento\\Framework\\Api\\SearchCriteriaBuilder');
     $filter = $filterBuilder->setField(BlockInterface::IDENTIFIER)->setValue($blockIdentifier)->create();
     $searchCriteriaBuilder->addFilter([$filter]);
     $searchData = $searchCriteriaBuilder->create()->__toArray();
     $requestData = ['searchCriteria' => $searchData];
     $serviceInfo = ['rest' => ['resourcePath' => self::RESOURCE_PATH . "/search" . '?' . http_build_query($requestData), 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET], 'soap' => ['service' => self::SERVICE_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_NAME . 'GetList']];
     $searchResult = $this->_webApiCall($serviceInfo, $requestData);
     $this->assertEquals(1, $searchResult['total_count']);
     $this->assertEquals($searchResult['items'][0][BlockInterface::IDENTIFIER], $blockIdentifier);
 }