public function editAction() { $this->accessRights(12); //Accept Parent Module, Return Main Menu Lists with Active Menu Indicator $this->childModuleAccessRights(32, 'edit'); //Accept Child Module ID & it's Actions: add, edit, view, disable $id = (int) $this->params()->fromRoute('id', 0); if (!$id) { return $this->redirect()->toRoute('source', array('action' => 'add')); } try { $source = $this->getSourceTable()->getSource($id); } catch (\Exception $ex) { return $this->redirect()->toRoute('source', array('action' => 'index')); } $form = new SourceForm(); $form->bind($source); // $form->get('source_kind_id')->setAttribute('options', $this->dropDownSourceKindId()); $form->get('submit')->setAttribute('value', 'Edit'); $request = $this->getRequest(); if ($request->isPost()) { // prepare audit trail parameters $from = (array) $source; $to = $this->getRequest()->getPost()->toArray(); $diff = array_diff_assoc($to, $from); unset($diff['submit'], $diff['sources_id']); $changes = $this->prepare_modified_data($from, $to, $diff); // end of audit trail parameters $form->setInputFilter($source->getInputFilter()); $form->setData($request->getPost()); $form->getInputFilter()->remove('media_outfit_name'); if ($form->isValid()) { $this->getSourceTable()->saveSource($this->getRequest()->getPost()); $this->save_to_audit_trail($to['source_name'], $changes['pre'], $changes['post'], 'edit', 32); // show alert of updated data $this->flashMessenger()->addMessage(['content' => $request->getPost('source_name') . ' source has been updated.', 'type' => 'success']); } return $this->redirect()->toRoute('sources'); } }