/** * Prepare form for render * * @return void */ protected function _prepareLayout() { parent::_prepareLayout(); /** @var \Magento\Framework\Data\Form $form */ $form = $this->_formFactory->create(); $demoId = $this->_coreRegistry->registry('current_demo_id'); /** @var \Genmato\Sample\Model\DemoFactory $demoData */ if ($demoId === null) { $demoData = $this->demoDataFactory->create(); } else { $demoData = $this->demoDataFactory->create()->load($demoId); } $yesNo = []; $yesNo[0] = 'No'; $yesNo[1] = 'Yes'; $fieldset = $form->addFieldset('base_fieldset', ['legend' => __('Basic Information')]); $fieldset->addField('title', 'text', ['name' => 'title', 'label' => __('Title'), 'title' => __('Title'), 'required' => true]); $fieldset->addField('is_active', 'select', ['name' => 'is_active', 'label' => __('Active'), 'title' => __('Active'), 'class' => 'required-entry', 'required' => true, 'values' => $yesNo]); $fieldset->addField('is_visible', 'select', ['name' => 'is_visible', 'label' => __('Visible'), 'title' => __('Visible'), 'class' => 'required-entry', 'required' => true, 'values' => $yesNo]); if ($demoData->getId() !== null) { // If edit add id $form->addField('demo_id', 'hidden', ['name' => 'demo_id', 'value' => $demoData->getId()]); } if ($this->_backendSession->getDemoData()) { $form->addValues($this->_backendSession->getDemoData()); $this->_backendSession->setDemoData(null); } else { $form->addValues(['id' => $demoData->getId(), 'title' => $demoData->getTitle(), 'is_active' => $demoData->getIsActive(), 'is_visible' => $demoData->getIsVisible()]); } $form->setUseContainer(true); $form->setId('edit_form'); $form->setAction($this->getUrl('*/*/save')); $form->setMethod('post'); $this->setForm($form); }
/** * Add record to demoList when new order is placed * * @param EventObserver $observer * @return void */ public function execute(EventObserver $observer) { /** @var \Magento\Sales\Model\Order $order */ $order = $observer->getEvent()->getOrder(); $demoList = $this->demoFactory->create(); $demoList->setTitle(__('New order (%1) placed!', $order->getIncrementId())); try { $demoList->save(); } catch (\Exception $ex) { // Process error here.... } }
/** * {@inheritdoc} */ public function getList(SearchCriteriaInterface $searchCriteria) { $searchResults = $this->searchResultsFactory->create(); $searchResults->setSearchCriteria($searchCriteria); /** @var Collection $collection */ $collection = $this->demoFactory->create()->getCollection(); foreach ($searchCriteria->getFilterGroups() as $filterGroup) { foreach ($filterGroup->getFilters() as $filter) { $condition = $filter->getConditionType() ?: 'eq'; $collection->addFieldToFilter($filter->getField(), [$condition => $filter->getValue()]); } } $searchResults->setTotalCount($collection->getSize()); $sortOrders = $searchCriteria->getSortOrders(); if ($sortOrders) { /** @var SortOrder $sortOrder */ foreach ($sortOrders as $sortOrder) { $collection->addOrder($sortOrder->getField(), $sortOrder->getDirection() == SortOrder::SORT_ASC ? 'ASC' : 'DESC'); } } $collection->setCurPage($searchCriteria->getCurrentPage()); $collection->setPageSize($searchCriteria->getPageSize()); /** @var DemoInterface[] $demos */ $demos = []; /** @var DemoModel $demo */ foreach ($collection as $demo) { /** @var DemoInterface $demoDataObject */ $demoDataObject = $this->demoDataFactory->create()->setId($demo->getId())->setTitle($demo->getTitle())->setCreationTime($demo->getCreationTime())->setUpdateTime($demo->getUpdateTime())->setIsVisible($demo->getIsVisible())->setIsActive($demo->getIsActive()); $demos[] = $demoDataObject; } $searchResults->setTotalCount($collection->getSize()); return $searchResults->setItems($demos); }
/** * Save DemoList item. * * @return \Magento\Backend\Model\View\Result\Page|\Magento\Backend\Model\View\Result\Redirect */ public function execute() { $id = $this->getRequest()->getParam('demo_id'); $resultRedirect = $this->resultRedirectFactory->create(); try { if ($id !== null) { $demoData = $this->demoFactory->create()->load((int) $id); } else { $demoData = $this->demoFactory->create(); } $data = $this->getRequest()->getParams(); $demoData->setData($data)->save(); $this->messageManager->addSuccess(__('Saved DemoList item.')); $resultRedirect->setPath('sample/demolist'); } catch (\Exception $e) { $this->messageManager->addError($e->getMessage()); $this->_getSession()->setDemoData($data); $resultRedirect->setPath('sample/demolist/edit', ['demo_id' => $id]); } return $resultRedirect; }
/** * Create demo * * @return Demo */ public function createDemo() { return $this->demoFactory->create(); }