Contenido del curso

Manos a la obra con nuestro proyecto

Formulario para eliminar registros en Laravel

Resumen

Aprender a eliminar registros con formularios en Laravel es uno de los pasos más prácticos cuando construyes un CRUD. Aquí te muestro cómo implementar la función destroy siguiendo las convenciones del framework, con seguridad CSRF y una confirmación antes de borrar.

¿Cómo se crea el método destroy en el controlador?

El método destroy vive en el controlador y se encarga de recibir el post enviado desde la vista, ejecutar la eliminación y devolverte a la vista anterior.

La estructura básica es sencilla: defines el método con el nombre destroy, recibes como parámetro el modelo Post que quieres eliminar y llamas a la función de borrado. Después, retornas a la vista anterior para cerrar el flujo.

Lo interesante es que no estás inventando nombres al azar. Laravel ya te dice qué método y qué ruta usar gracias a la definición de rutas tipo resource. Si ejecutas el comando que lista las rutas, verás que post.destroy apunta directamente al método destroy del controlador [0:54].

¿Por qué seguir las convenciones de Laravel? Porque te ahorras configurar ruta por ruta. Al usar rutas resource, Laravel te entrega nombres, métodos HTTP y parámetros listos, y tu código queda más limpio y mantenible.

¿Cómo se construye el formulario de eliminación en la vista?

En la vista index, donde listas tus posts, necesitas un formulario por cada elemento que puedas borrar. Como vas a alterar la base de datos, usa el método post y apunta a la ruta post.destroy pasando como parámetro el post actual [1:31].

Dentro del formulario hay dos piezas clave que no puedes saltarte:

  • La directiva @csrf, que genera un token de seguridad para que Laravel identifique el formulario como propio y no como un intento externo.
  • La directiva @method('DELETE'), que le dice a Laravel que tu intención real es eliminar, aunque el formulario use post por debajo.

Después viene el botón. Un input tipo submit con el valor "Eliminar" y algunas clases de Tailwind CSS para darle estilo: fondo gris nivel 800, texto blanco, bordes redondeados y relleno horizontal nivel 4, vertical nivel 2.

¿Cómo agregar una confirmación antes de eliminar?

Borrar sin preguntar es peligroso. Por eso conviene sumar un poco de JavaScript al formulario con el atributo onsubmit, que devuelve un mensaje de confirmación tipo confirm('¿Desea eliminar?') [2:42].

Si el usuario hace clic en OK, el formulario se envía y el registro desaparece. Si hace clic en Cancelar, el envío se detiene y no pasa nada. Es una capa mínima de protección que evita borrados accidentales.

¿Qué hace el token CSRF en un formulario de Laravel? Es un identificador único que Laravel genera para validar que el formulario salió de tu propia aplicación. Sin él, la petición se rechaza por seguridad.

¿Qué conceptos clave debes dominar de esta función?

Antes de avanzar al siguiente paso del CRUD, asegúrate de tener claros estos elementos que aparecieron en la clase:

  • Método destroy: la función del controlador encargada de eliminar un recurso siguiendo la convención resource de Laravel.
  • Ruta post.destroy: el nombre que Laravel asigna automáticamente a la ruta de eliminación cuando defines rutas tipo recurso.
  • CSRF token: protección contra falsificación de peticiones, obligatoria en formularios que modifican datos.
  • @method('DELETE'): directiva de Blade que simula el verbo HTTP DELETE en un formulario post.
  • Tailwind CSS: framework de utilidades para dar estilo rápido al botón sin escribir CSS personalizado.
  • confirm() en JavaScript: función nativa del navegador que muestra un diálogo de aceptar o cancelar antes de ejecutar una acción.

Con esta función lista, ya tienes la parte de borrado de tu CRUD funcionando. ¿Cómo resolverías tú la confirmación: con el confirm nativo o con un modal personalizado? Cuéntame en los comentarios.