/** * @return \Zend\Http\Response|ViewModel */ public function detailAction() { $id = (int) $this->params()->fromRoute('id', 0); $action = $this->params()->fromQuery('action', ''); $helper = new PositionHelper($this->getDbAdapter()); $form = $helper->getForm($this->statusCombo(), $this->currencyCombo()); $position = $this->positionTable()->getPosition($id); $isEdit = true; if (!$position) { $isEdit = false; $position = new Position(); } if ($action == 'clone') { $isEdit = false; $id = 0; $position->setPositionId(0); } $form->bind($position); $request = $this->getRequest(); if ($request->isPost()) { $post_data = $request->getPost()->toArray(); $form->setData($post_data); $form->setInputFilter($helper->getInputFilter($isEdit ? $post_data['positionId'] : 0, $post_data['name'])); if ($form->isValid()) { $this->positionTable()->savePosition($position); $this->flashMessenger()->addSuccessMessage('Save successful'); return $this->redirect()->toRoute('hr_position'); } } return new ViewModel(array('form' => $form, 'id' => $id, 'isEdit' => $isEdit)); }
/** * @param Position $position * @return Position */ public function savePosition(Position $position) { $id = $position->getPositionId(); $data = $position->getArrayCopy(); if ($id > 0) { $this->update($data, array('positionId' => $id)); } else { unset($data['positionId']); $this->insert($data); } if (!$position->getPositionId()) { $position->setPositionId($this->getLastInsertValue()); } return $position; }