/** * @return ViewModel */ public function modulesAction() { $installService = $this->getServiceLocator()->get('Install\\Service\\Install'); $sessionProgress = new Container('progress_tracker'); $sessionProgress->offsetSet('current_step', 'modules'); $previousStep = $installService->checkPreviousStep(); if (null !== $previousStep) { return $this->redirect()->toRoute('install/default', ['controller' => 'index', 'action' => $previousStep]); } $sessionProgress->offsetSet('modules', Install::TODO); $sessionForms = new Container('forms'); $this->setProgress(); if ($this->getRequest()->isPost()) { $modulesForm = new Modules(); $modulesForm->setInputFilter(new ModulesInputFilter($this->getServiceLocator())); $modulesForm->setData($this->getRequest()->getPost()); if ($modulesForm->isValid()) { $sessionForms->offsetSet('modulesForm', $modulesForm->getData()); try { $installService->hideModules($modulesForm); $sessionProgress->offsetSet('modules', Install::DONE); return $this->redirect()->toRoute('install/default', ['controller' => 'index', 'action' => 'modules-requirements']); } catch (\Exception $e) { $modulesForm->get('Categories')->setMessages([$e->getMessage()]); } } } else { $modulesForm = new Modules(); if (null !== $sessionForms->offsetGet('modulesForm')) { $modulesForm->setData($sessionForms->offsetGet('modulesForm')); } } return new ViewModel(['modulesForm' => $modulesForm]); }