Aprender a eliminar registros en una aplicación web es el paso que completa el ciclo de un sistema CRUD funcional. Vas a ver cómo activar el método DELETE sobre una arquitectura que ya soporta GET y POST, ajustando el sistema de rutas, el controlador y la vista para que la acción de borrado se ejecute correctamente.
¿Cómo se define una ruta DELETE en el sistema de rutas?
El primer paso es declarar la ruta dentro del archivo de rutas, siguiendo la misma lógica que ya usaste para POST. Defines un nuevo método llamado delete y lo registras con la sintaxis equivalente a la de las rutas anteriores, pero apuntando específicamente al verbo DELETE.
Mientras esa ruta no exista, el sistema lanza un mensaje claro: el método no está registrado. Al añadirlo, el roteamento ya reconoce tres acciones posibles dentro de tu aplicación.
- GET para leer recursos.
- POST para crear o enviar datos.
- DELETE para eliminar registros.
Con esa base, el sistema queda preparado para interpretar la intención de borrado cuando llegue desde el formulario.
¿Por qué se usa un campo oculto para enviar DELETE desde un formulario?
A nivel de HTTP, los formularios HTML solo aceptan GET y POST como métodos válidos. Eso significa que no puedes enviar un DELETE directo desde el navegador. La solución es trabajar con un campo oculto dentro del formulario que comunique al backend tu intención real.
El formulario sigue siendo POST, pero incluyes un input oculto con el valor delete. Cuando el sistema recibe esa petición, lee el campo oculto y entiende que la operación a ejecutar es una eliminación, no una creación.
¿Qué es un campo oculto en un formulario? Es un input que el usuario no ve, pero que viaja junto al resto de los datos al enviar el formulario. Sirve para pasar información interna al servidor, como el método real que quieres ejecutar.
Dentro de ese mismo formulario también envías el ID del registro que quieres eliminar. Así el backend sabe exactamente qué fila tocar en la base de datos.
¿Cómo se acepta el método DELETE en el sistema interno?
El navegador siempre va a llegar con POST, pero tu sistema de rutas necesita una verificación adicional. Revisas si el formulario incluye el campo oculto con valor delete y, en caso afirmativo, despachas la petición como si fuera del método DELETE. Si no aparece, el flujo continúa con el GET o POST habitual.
Esa pequeña capa intermedia es la que acerca tu proyecto a un entorno profesional como Laravel, donde este patrón está integrado de forma nativa.
¿Cómo se conecta la acción DELETE con el controlador y la base de datos?
Una vez que la ruta funciona, el siguiente error esperado es que el método no existe en el controlador. Lo creas siguiendo la misma estructura que ya conoces: una función simple que expresa la intención de borrado.
Dentro del método haces lo siguiente:
- Recibes el ID del registro desde el formulario.
- Si no llega nada, lo rellenas con un valor null para evitar errores.
- Te conectas a la base de datos y ejecutas la consulta de eliminación sobre ese ID.
- Rediriges al usuario de vuelta a la página de listado.
¿Qué hace exactamente la acción DELETE en el controlador? Recibe el ID enviado desde el formulario, ejecuta una consulta SQL que elimina ese registro de la base de datos y devuelve al usuario a la vista principal.
Al probar el flujo completo, el sistema pasa de tener siete elementos a seis después de un solo clic. Esa es la confirmación visual de que la acción de eliminar quedó correctamente integrada.
¿Qué se logra al cerrar el ciclo CRUD?
Con la eliminación funcionando, ya tienes activas tres de las cuatro operaciones fundamentales: crear, leer y eliminar. El sistema de rutas comprende los tres verbos, el controlador responde a cada uno y las vistas disparan las acciones correctas.
El siguiente paso natural es construir el formulario de edición para completar la U de update y cerrar el CRUD por completo. ¿Cómo estructurarías tú el formulario de edición para reutilizar la lógica que ya tienes? Cuéntame en los comentarios.