public function atualizarAction()
 {
     // obtém a requisição
     $request = $this->getRequest();
     // verifica se a requisição é do tipo post
     if ($request->isPost()) {
         // instancia formulário
         $form = new FuncionarioForm();
         // instancia model funcionario com regras de filtros e validações
         $modelFuncionario = new Funcionario();
         // passa para o objeto formulário as regras de viltros e validações
         // contidas na entity funcionario
         $form->setInputFilter($modelFuncionario->getInputFilter());
         // passa para o objeto formulário os funcionarios vindos da submissão
         $form->setData($request->getPost());
         // verifica se o formulário segue a validação proposta
         if ($form->isValid()) {
             // aqui vai a lógica para atualizar os funcionarios à tabela no banco
             // 1 - popular model com valores do formulário
             $modelFuncionario->exchangeArray($form->getData());
             // 2 - atualizar funcionarios do model para banco de funcionarios
             $this->getFuncionarioTable()->update($modelFuncionario);
             // adicionar mensagem de sucesso
             $this->flashMessenger()->addSuccessMessage("Funcionario editado com sucesso");
             $nome_cache_funcionario_id = "nome_cache_funcionario_{$modelFuncionario->id_funcionario}";
             if ($this->cache()->hasItem($nome_cache_funcionario_id)) {
                 $this->cache()->removeItem($nome_cache_funcionario_id);
             }
             // redirecionar para action detalhes
             return $this->redirect()->toRoute('funcionarios', ["action" => "main", "id" => $modelFuncionario->id_funcionario]);
         } else {
             // em caso da validação não seguir o que foi definido
             // renderiza para action editar com o objeto form populado,
             // com isso os erros serão tratados pelo helpers view
             return (new ViewModel())->setVariable('formFuncionarios', $form)->setTemplate('funcionario/funcionarios/editar');
         }
     }
 }
 public function editAction()
 {
     $id = (int) $this->getEvent()->getRouteMatch()->getParam('id');
     if (!$id) {
         return $this->redirect()->toRoute('funcionario', array('action' => 'add'));
     }
     $funcionario = $this->getEntityManager()->find('Funcionario\\Entity\\Funcionario', $id);
     //$funcionario->setDatanasc(new \DateTime());
     $form = new FuncionarioForm();
     $form->setBindOnValidate(false);
     $form->bind($funcionario);
     $form->get('submit')->setAttribute('label', 'Edit');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $form->bindValues();
             //SET DATA NASC
             $data = explode("/", $form->getData()->getDataNasc());
             $data = $data['0'] . "-" . $data['1'] . "-" . $data['2'];
             $form->getData()->setDatanasc(new \DateTime($data));
             $data = explode("/", $funcionario->getDataAdmissao());
             $data = $data['0'] . "-" . $data['1'] . "-" . $data['2'];
             $funcionario->setDataAdmissao(new \DateTime($data));
             //END SET DATA NASC
             $this->getEntityManager()->flush();
             // Redirect to list of funcionarios
             return $this->redirect()->toRoute('funcionario');
         }
     }
     return array('id' => $id, 'form' => $form);
 }