/** * @return \Magento\Framework\Controller\ResultInterface */ public function executeInternal() { /** @var \Magento\Framework\Controller\Result\Json $resultJson */ $resultJson = $this->jsonFactory->create(); $error = false; $messages = []; if ($this->getRequest()->getParam('isAjax')) { $postItems = $this->getRequest()->getParam('items', []); if (!count($postItems)) { $messages[] = __('Please correct the data sent.'); $error = true; } else { foreach (array_keys($postItems) as $blockId) { /** @var \Magento\Cms\Model\Block $block */ $block = $this->blockRepository->getById($blockId); try { $block->setData(array_merge($block->getData(), $postItems[$blockId])); $this->blockRepository->save($block); } catch (\Exception $e) { $messages[] = $this->getErrorWithBlockId($block, __($e->getMessage())); $error = true; } } } } return $resultJson->setData(['messages' => $messages, 'error' => $error]); }
/** * 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); }