public function __construct($tableName, $entityClass) { $this->dbAdapter = Registry::getService('Zend\\Db\\Adapter\\Adapter'); $this->tableName = $tableName; $this->tableGateway = new TableGateway($this->tableName, $this->dbAdapter); $this->entityClass = $entityClass; }
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)); }