public function editAction()
 {
     $id = (int) $this->getEvent()->getRouteMatch()->getParam('id');
     if (!$id) {
         return $this->redirect()->toRoute('aluno', array('action' => 'add'));
     }
     $aluno = $this->getEntityManager()->find('Aluno\\Entity\\Aluno', $id);
     //$aluno->setDatanasc(new \DateTime());
     $form = new AlunoForm($this->getEntityManager());
     $form->setBindOnValidate(false);
     $form->bind($aluno);
     $form->get('submit')->setAttribute('label', 'Edit');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $form->bindValues();
             $curso = $this->getEntityManager()->getRepository('Curso\\Entity\\Curso')->findOneBy(array('idcurso' => $aluno->getCursoAluno()));
             $aluno->setCursoAluno($curso);
             // $this->getEntityManager()->flush();
             if ($form->getData()->getBolsista() == "true") {
                 $form->getData()->setBolsista(true);
             } else {
                 if ($form->getData()->getBolsista() == "false") {
                     $form->getData()->setBolsista(false);
                 }
             }
             //SET DATA NASC
             $data = explode("/", $form->getData()->getDataNasc());
             $data = $data['0'] . "-" . $data['1'] . "-" . $data['2'];
             $form->getData()->setDatanasc(new \DateTime($data));
             //END SET DATA NASC
             $this->getEntityManager()->persist($aluno);
             $this->getEntityManager()->flush();
             // Redirect to list of albums
             return $this->redirect()->toRoute('aluno');
         }
     }
     return array('id' => $id, 'form' => $form);
 }
 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 AlunoForm();
         // instancia model alunos com regras de filtros e validações
         $modelAluno = new Aluno();
         // passa para o objeto formulário as regras de viltros e validações
         // contidas na entity alunos
         $form->setInputFilter($modelAluno->getInputFilter());
         // passa para o objeto formulário os alunos 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 alunos à tabela no banco
             // 1 - popular model com valores do formulário
             $modelAluno->exchangeArray($form->getData());
             // 2 - atualizar alunos do model para banco de alunos
             $this->getAlunoTable()->update($modelAluno);
             // adicionar mensagem de sucesso
             $this->flashMessenger()->addSuccessMessage("Aluno editado com sucesso");
             $nome_cache_aluno_id = "nome_cache_aluno_{$modelAluno->id_aluno}";
             if ($this->cache()->hasItem($nome_cache_aluno_id)) {
                 $this->cache()->removeItem($nome_cache_aluno_id);
             }
             // redirecionar para action detalhes
             return $this->redirect()->toRoute('alunos', ["action" => "main", "id" => $modelAluno->id_aluno]);
         } 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('formAlunos', $form)->setTemplate('aluno/alunos/editar');
         }
     }
 }