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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
/*------------------------------------------------------------------------
# SM Mega Menu - Version 3.2.0
# Copyright (c) 2015 YouTech Company. All Rights Reserved.
# @license - Copyrighted Commercial Software
# Author: YouTech Company
# Websites: http://www.magentech.com
-------------------------------------------------------------------------*/
namespace Sm\MegaMenu\Controller\Adminhtml\MenuGroup;
use Magento\Backend\App\Action;
class Save extends Action
{
/**
* Save action
*
* @return \Magento\Framework\Controller\ResultInterface
*/
public function createMenuGroup()
{
return $this->_objectManager->create('Sm\MegaMenu\Model\MenuGroup');
}
public function createMenuItems()
{
return $this->_objectManager->create('Sm\MegaMenu\Model\MenuItems');
}
public function execute()
{
$data = $this->getRequest()->getPostValue();
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
if ($data) {
$id = $this->getRequest()->getParam('group_id');
$menuGroup = $this->createMenuGroup();
$menuItems = $this->createMenuItems();
$model = $menuGroup->load($id);
if (!$model->getId() && $id) {
$this->messageManager->addError(__('This group no longer exists.'));
return $resultRedirect->setPath('*/*/');
}
// init model and set data
$model->setData($data);
// try to save it
try {
// save the data
$model->save();
if(!$id)
{
$data = [
'title' => __('Root['.$model->getTitle().']'),
'group_id' => $model->getGroupId(),
'status' => 1,
'description' => '',
'depth' => 0,
'parent_id' => 0,
'order_item' => 0,
'data_type' => '',
'content' => '',
'custom_class' => '',
'limit_category' => ''
];
// $this->_eventManager->dispatch('megamenu_menugroup_save_after', ['menugroup' => $model]);
$menuItems->setData($data);
try{
$menuItems->save();
}
catch (\Exception $e)
{
$this->messageManager->addError($e->getMessage());
return;
}
}
// display success message
$this->messageManager->addSuccess(__('You saved the group.'));
// 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')) {
return $resultRedirect->setPath('*/*/edit', [
'id' => $model->getGroupId(),
'activeTab' => $this->getRequest()->getParam('activeTab')
]);
}
// go to grid
return $resultRedirect->setPath('*/*/');
}
catch (\Exception $e)
{
// display error message
$this->messageManager->addError($e->getMessage());
// save data in session
$this->_objectManager->get('Magento\Backend\Model\Session')->setFormData($data);
// redirect to edit form
return $resultRedirect->setPath('*/*/edit', ['id' => $this->getRequest()->getParam('gid')]);
}
}
return $resultRedirect->setPath('*/*/');
}
}