Esempio n. 1
0
 /**
  * @return \Magento\Framework\Controller\ResultInterface
  */
 public function execute()
 {
     /** @var \Magento\Framework\Controller\Result\Json $resultJson */
     $resultJson = $this->jsonFactory->create();
     $error = false;
     $messages = [];
     $postItems = $this->getRequest()->getParam('items', []);
     if (!($this->getRequest()->getParam('isAjax') && count($postItems))) {
         return $resultJson->setData(['messages' => [__('Please correct the data sent.')], 'error' => true]);
     }
     foreach (array_keys($postItems) as $pageId) {
         /** @var \Magento\Cms\Model\Page $page */
         $page = $this->pageRepository->getById($pageId);
         try {
             $pageData = $this->filterPost($postItems[$pageId]);
             $this->validatePost($pageData, $page, $error, $messages);
             $extendedPageData = $page->getData();
             $this->setCmsPageData($page, $extendedPageData, $pageData);
             $this->pageRepository->save($page);
         } catch (\Magento\Framework\Exception\LocalizedException $e) {
             $messages[] = $this->getErrorWithPageId($page, $e->getMessage());
             $error = true;
         } catch (\RuntimeException $e) {
             $messages[] = $this->getErrorWithPageId($page, $e->getMessage());
             $error = true;
         } catch (\Exception $e) {
             $messages[] = $this->getErrorWithPageId($page, __('Something went wrong while saving the page.'));
             $error = true;
         }
     }
     return $resultJson->setData(['messages' => $messages, 'error' => $error]);
 }
 /**
  * Test search \Magento\Cms\Api\Data\PageInterface
  */
 public function testSearch()
 {
     $pageTitle = 'Page title';
     $pageIdentifier = 'page-title' . uniqid();
     /** @var  \Magento\Cms\Api\Data\PageInterface $pageDataObject */
     $pageDataObject = $this->pageFactory->create();
     $pageDataObject->setTitle($pageTitle)->setIdentifier($pageIdentifier);
     $this->currentPage = $this->pageRepository->save($pageDataObject);
     $filterBuilder = Bootstrap::getObjectManager()->create('Magento\\Framework\\Api\\FilterBuilder');
     $searchCriteriaBuilder = Bootstrap::getObjectManager()->create('Magento\\Framework\\Api\\SearchCriteriaBuilder');
     $filter = $filterBuilder->setField(PageInterface::IDENTIFIER)->setValue($pageIdentifier)->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][PageInterface::IDENTIFIER], $pageIdentifier);
 }