<?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('*/*/'); } }