public function editAction()
 {
     $id = (int) $this->getEvent()->getRouteMatch()->getParam('id');
     if (!$id) {
         return $this->redirect()->toRoute('curso', array('action' => 'add'));
     }
     $curso = $this->getEntityManager()->find('Curso\\Entity\\Curso', $id);
     $form = new CursoForm($this->getEntityManager());
     $form->setBindOnValidate(false);
     $form->bind($curso);
     $form->get('submit')->setAttribute('label', 'Edit');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $form->bindValues();
             $departamento = $this->getEntityManager()->getRepository('Professor\\Entity\\Departamento')->findOneBy(array('iddepartamento' => $curso->getDepartamentoCurso()));
             $curso->setDepartamentoCurso($departamento);
             $this->getEntityManager()->flush();
             // Redirect to list of albums
             return $this->redirect()->toRoute('curso');
         }
     }
     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 CursoForm();
         // instancia model curso com regras de filtros e validações
         $modelCurso = new Curso();
         // passa para o objeto formulário as regras de viltros e validações
         // contidas na entity curso
         $form->setInputFilter($modelCurso->getInputFilter());
         // passa para o objeto formulário os curso 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 curso à tabela no banco
             // 1 - popular model com valores do formulário
             $modelCurso->exchangeArray($form->getData());
             // 2 - atualizar curso do model para banco de curso
             $this->getCursoTable()->update($modelCurso);
             // adicionar mensagem de sucesso
             $this->flashMessenger()->addSuccessMessage("Curso editado com sucesso");
             $nome_cache_curso_id = "nome_cache_curso_{$modelCurso->id_curso}";
             if ($this->cache()->hasItem($nome_cache_curso_id)) {
                 $this->cache()->removeItem($nome_cache_curso_id);
             }
             // redirecionar para action detalhes
             return $this->redirect()->toRoute('cursos', ["action" => "main", "id" => $modelCurso->id_curso]);
         } 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('formCursos', $form)->setTemplate('curso/cursos/editar');
         }
     }
 }