Monoforms

CREANDO UN CRUD CON LAMINAS 5a PARTE: Eliminar tarea


La acción para eliminar una task no es complicada, de hecho es una de las acciones más sencillas. Vamos a crear una nueva acción en nuestro controlador ToDoController.php y la vamos a llamar deleteAction(), con el siguiente código:

public function deleteAction()
{
    $id = (int) $this->params()->fromRoute('id', 0);

    try {
        $task = $this->table->getTask($id);
    } catch (\Exception $e) {
        return $this->redirect()->toRoute('todo-app', ['action' => 'index']);
    }

    try {
        $this->table->deleteTask($task->id);
    } catch (\Exception $e){
        \error_log("error updating", $e->getMessage());
    }

    return $this->redirect()->toRoute('todo-app', ['action' => 'index']);
}

Al igual que editar y mostrar una tarea, pasamos el id por la url, el cual buscamos en la BD, si no la encontramos entonces redirigimos al listado de tareas. Si hemos encontrado el id, aplicamos el método deleteTask() de TaskTable, pasándole como parámetro el id de la task y por último redirigimos al listado.

Ahora en el listado vamos agregar un nuevo botón para eliminar la task, así como sigue:

<a class="btn btn-danger btn-sm p-1"
   onclick="return confirm('Are you sure you want to delete?')"
   href="<?= $this->url('todo-app', [
           'action' => 'delete',
           'id' => $task->id
       ]) ?>"
>
      Eliminar
 </a>

Agregamos el botón Eliminar con un color rojo para indicar que es una acción peligrosa mediante la clase btn-danger de bootstrap.

CREANDO UN CRUD CON LAMINA: delete button

Además en este botón agregamos código javascript para mostrarle una alerta al usuario con lo siguiente: “Are you sure want to delete?” (¿estás seguro de borrar la tarea?). Si el usuario confirma entonces se procede a eliminar la task. El botón debe lucir como en la imagen:

CREANDO UN CRUD CON LAMINA: delete button

Ahora vamos a implementar el método deleteTask() en nuestro archivo TaskTable.php, de la siguiente manera:

public function deleteTask($id)
{
    $this->tableGateway->delete(['id' => (int) $id]);
}

Este método solo recibe el id de la tarea y elimina completamente de la base de datos la información de esa tarea.

Al presionar el botón Eliminar ya no debes ver la tarea.


Por ahora es todo. No desesperen ya viene la última parte, lo prometo.

Saludos y happy coding :)


...
Monoforms ©2021 Created by Pedro Rojas Reyes