/** * Filtering posted data. * * @param array $postData * @return array */ protected function filterPost($postData = []) { $pageData = $this->dataProcessor->filter($postData); $pageData['custom_theme'] = isset($pageData['custom_theme']) ? $pageData['custom_theme'] : null; $pageData['custom_root_template'] = isset($pageData['custom_root_template']) ? $pageData['custom_root_template'] : null; return $pageData; }
/** * @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->dataProcessor->filter($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]); }
/** * Save action * * @return void */ public function execute() { // check if data sent $data = $this->getRequest()->getPost(); if ($data) { $data = $this->dataProcessor->filter($data); //init model and set data $model = $this->_objectManager->create('Magento\\Cms\\Model\\Page'); $id = $this->getRequest()->getParam('page_id'); if ($id) { $model->load($id); } $model->setData($data); $this->_eventManager->dispatch('cms_page_prepare_save', array('page' => $model, 'request' => $this->getRequest())); //validating if (!$this->dataProcessor->validate($data)) { $this->_redirect('*/*/edit', array('page_id' => $model->getId(), '_current' => true)); return; } // try to save it try { // save the data $model->save(); // display success message $this->messageManager->addSuccess(__('The page has been saved.')); // clear previously saved data from session $this->_objectManager->get('Magento\\Backend\\Model\\Session')->setFormData(false); // check if 'Save and Continue' if ($this->getRequest()->getParam('back')) { $this->_redirect('*/*/edit', array('page_id' => $model->getId(), '_current' => true)); return; } // go to grid $this->_redirect('*/*/'); return; } catch (\Magento\Framework\Model\Exception $e) { $this->messageManager->addError($e->getMessage()); } catch (\Exception $e) { $this->messageManager->addException($e, __('Something went wrong while saving the page.')); } $this->_getSession()->setFormData($data); $this->_redirect('*/*/edit', array('page_id' => $this->getRequest()->getParam('page_id'))); return; } $this->_redirect('*/*/'); }
/** * Save action * * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @return \Magento\Framework\Controller\ResultInterface */ public function execute() { $data = $this->getRequest()->getPostValue(); /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); if ($data) { $data = $this->dataProcessor->filter($data); if (isset($data['is_active']) && $data['is_active'] === 'true') { $data['is_active'] = Page::STATUS_ENABLED; } if (empty($data['page_id'])) { $data['page_id'] = null; } $model = $this->_objectManager->create('Magento\\Cms\\Model\\Page'); $id = $this->getRequest()->getParam('page_id'); if ($id) { $model->load($id); } $model->setData($data); $this->_eventManager->dispatch('cms_page_prepare_save', ['page' => $model, 'request' => $this->getRequest()]); if (!$this->dataProcessor->validate($data)) { return $resultRedirect->setPath('*/*/edit', ['page_id' => $model->getId(), '_current' => true]); } try { $model->save(); $this->messageManager->addSuccess(__('You saved this page.')); $this->_objectManager->get('Magento\\Backend\\Model\\Session')->setFormData(false); if ($this->getRequest()->getParam('back')) { return $resultRedirect->setPath('*/*/edit', ['page_id' => $model->getId(), '_current' => true]); } return $resultRedirect->setPath('*/*/'); } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->messageManager->addError($e->getMessage()); } catch (\RuntimeException $e) { $this->messageManager->addError($e->getMessage()); } catch (\Exception $e) { $this->messageManager->addException($e, __('Something went wrong while saving the page.')); } $this->_getSession()->setFormData($data); return $resultRedirect->setPath('*/*/edit', ['page_id' => $this->getRequest()->getParam('page_id')]); } return $resultRedirect->setPath('*/*/'); }
public function testFilter() { $this->assertSame(['key' => 'value'], $this->postDataProcessor->filter(['key' => 'value'])); }