public function delete($id) { $repository = Registry::getEntityRepository($this->entityClass); $entity = $repository->findById($id); $methodNamePrimaryKey = MyHydrator::generateGetMethod($entity::PRIMARY_KEY); $primaryKeyValue = $entity->{$methodNamePrimaryKey}(); $this->tableGateway->delete(array($entity::PRIMARY_KEY => $primaryKeyValue)); return; }
public function editarAction() { $id = (int) $this->params()->fromRoute('id'); if (!$id) { return $this->redirect()->toUrl($this->redirect); } $request = $this->getRequest(); // Instancia o formuario e seta os elementos $form = new $this->form(); $form->constructElements(); // Se a requisicao nao for por 'POST' retorna um novo formulario if (!$request->isPost()) { $repository = Registry::getEntityRepository($this->entityClass); /** * * @todo Deve obrigar o repositorio a ter um metodo chamado findById() * validar para ver se o metodo existe * * @todo Verificar se existe uma entidade uma entidade ou retornar */ $entity = $repository->findById($id); if (!$entity) { $message = "The entity {$this->entityClass} does not have an object with the id {$id}."; $this->flashmessenger()->addErrorMessage($message); return $this->redirect()->toUrl('/test-center/module/index'); } $form->setData($entity->toArray()); return new ViewModel(array('nomeController' => $this->nomeController, 'descricaoAction' => $this->descricaoAction, 'form' => $form)); } // Pega o adaptador de banco de dados e inicia o beginTrasaction $connection = Registry::getService('Zend\\Db\\Adapter\\Adapter')->getDriver()->getConnection(); $connection->beginTransaction(); try { // Popula a entidade com o array de dados $entity = new $this->entityClass(); $form->bind($entity); $form->setData($request->getPost()); if (!$form->isValid()) { throw new ServiceException($form->getMessages()); } // Instancia o servico e verifica se existe uma pre verificacao a ser executada $service = Registry::getEntityService($this->entityClass); $service->update($form->getData()); $connection->commit(); } catch (ServiceException $exc) { $connection->rollback(); print '<pre>'; var_dump($exc->getMessage()); print '</pre>'; die; } // Redireciona o usuario return new ViewModel(array('nomeController' => $this->nomeController, 'descricaoAction' => $this->descricaoAction, 'form' => $form)); }