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