Save.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Backend\Controller\Adminhtml\System\Design;
  8. use Magento\Framework\App\Action\HttpPostActionInterface;
  9. /**
  10. * Save design action.
  11. */
  12. class Save extends \Magento\Backend\Controller\Adminhtml\System\Design implements HttpPostActionInterface
  13. {
  14. /**
  15. * Filtering posted data. Converting localized data if needed
  16. *
  17. * @param array $data
  18. * @return array|null
  19. */
  20. protected function _filterPostData($data)
  21. {
  22. $inputFilter = new \Zend_Filter_Input(
  23. ['date_from' => $this->dateFilter, 'date_to' => $this->dateFilter],
  24. [],
  25. $data
  26. );
  27. $data = $inputFilter->getUnescaped();
  28. return $data;
  29. }
  30. /**
  31. * Save design action.
  32. *
  33. * @return \Magento\Backend\Model\View\Result\Redirect
  34. */
  35. public function execute()
  36. {
  37. $data = $this->getRequest()->getPostValue();
  38. /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
  39. $resultRedirect = $this->resultRedirectFactory->create();
  40. if ($data) {
  41. $data['design'] = $this->_filterPostData($data['design']);
  42. $id = (int)$this->getRequest()->getParam('id');
  43. $design = $this->_objectManager->create(\Magento\Framework\App\DesignInterface::class);
  44. if ($id) {
  45. $design->load($id);
  46. }
  47. $design->setData($data['design']);
  48. if ($id) {
  49. $design->setId($id);
  50. }
  51. try {
  52. $design->save();
  53. $this->_eventManager->dispatch('theme_save_after');
  54. $this->messageManager->addSuccessMessage(__('You saved the design change.'));
  55. } catch (\Exception $e) {
  56. $this->messageManager->addErrorMessage($e->getMessage());
  57. $this->_objectManager->get(\Magento\Backend\Model\Session::class)->setDesignData($data);
  58. return $resultRedirect->setPath('*/*/edit', ['id' => $design->getId()]);
  59. }
  60. }
  61. return $resultRedirect->setPath('*/*/');
  62. }
  63. }