A última parte do crud é o delete. Vamos ver como excluir um registro do banco de dados usando o Zend Framework2 e o Doctrine 2.
01 - A rota para acessar o controller deve ser Segment pois iremos passa o id do registro pela url. Vamos acessar module/Administrador/config/module.config.php e adicionar a rota:
'adm-delete' => array(
'type' => 'Segment',
'options' => array(
'route' => '/administrador/delete[/:id]',
'constraints' => array(
'id' => '\d+'
),
'defaults' => array(
'controller' => 'Administrador\Controller\Administrador',
'action' => 'delete',
),
)
),
02 - O controller deve conter o método deleteAction para enviar os dados a classe de serviços: A classe AdministradorController está localizada em: module/Administrador/src/Administrador/Controller/
public function deleteAction() {
//pegando o parâmetro da rota
$admId = $this->params()->fromRoute('id', 0);
$admService = $this->getServiceLocator()->get('Administrador\Service\AdministradorService');
$delete = $admService ->delete($admId);
if (is_null($delete)) {
$this->flashMessenger()->addSuccessMessage('Excluído com sucesso.');
} else {
$this->flashMessenger()->addErrorMessage('Erro ao excluir.');
}
return $this->redirect()->toRoute('adm-home');
}
03 - A classe de serviço recebe o id do registro recupera os dados do registro no banco de dados e então exclui o mesmo. Em module/Administrador/src/Administrador/Service/ podemos encontrar a classe AdministardorService:
public function delete($id) {
$entity = $this->em->getReference($this->entity, $id);
if ($entity) {
$this->em->remove($entity);
return $this->em->flush();
} else {
return false;
}
}
Nenhum comentário:
Postar um comentário