22 Delete Confirmar con SweetAlert2 Antes de Borrar, Elimina Imagen del Storage y Mensaje Flash
Duración: 7 minDescripción
🔍 Lección 22: Delete Confirmar con SweetAlert2 Antes de Borrar, Elimina Imagen del Storage y Mensaje Flash 🚀🗑️
En este vigésimo segundo capítulo completamos el ciclo básico del CRUD para nuestro sistema multiidioma implementando la acción de eliminación segura (destroy). Explicamos cómo conectar un evento reactivo en el frontend usando SweetAlert2 internacionalizado para confirmar la acción, el proceso de borrado físico de archivos adjuntos para evitar el almacenamiento basura y el envío de respuestas flash de éxito hacia el listado principal.
🎯 Lo realizado en este capítulo
- 🛡️ Internacionalización de Alertas con SweetAlert2 (swal.fire): Añadimos la clase reactiva .btn-delete dentro de la cuadrícula del listado [02:51]. Programamos un script de escucha onclick que intercepta la acción de borrado y abre una ventana modal interactiva configurada dinámicamente con títulos, descripciones y botones de confirmación (¿Está seguro?, Eliminar, Cancelar) mapeados en sus variantes exactas para español, inglés y portugués [02:58, 03:27].
- ⚙️ Refactorización del Método destroy() en el Controlador: Actualizamos el método de destrucción en PetController para procesar el parámetro de identificación de la mascota [00:33]. En lugar de un retorno plano, implementamos la búsqueda inmediata mediante $pet = Pet::findOrFail($id); para tomar el control de la entidad antes de su purga definitiva en la base de datos [00:43].
- 🧼 Validación Preventiva y Borrado Físico del Storage: Añadimos una condicional preventiva utilizando la fachada de almacenamiento de Laravel [01:23]. Con la instrucción if (Storage::disk('public')->exists($pet->image)), el sistema comprueba la existencia real del archivo y ejecuta Storage::disk('public')->delete($pet->image);, garantizando que la imagen asociada en el disco local sea removida de raíz antes de eliminar el registro, previniendo la acumulación de datos huérfanos en el servidor [01:33, 01:53].
- 🗑️ Remoción de Registros y Mensajes de Sesión Flash: Tras limpiar el almacenamiento físico, ejecutamos la directiva $pet->delete(); para purgar de forma permanente la fila e hilos JSON en la base de datos de MySQL [02:02]. Concluimos la instrucción redirigiendo al cliente con un mensaje de sesión flash personalizado: return redirect()->route('pets.index')->with('success', '...'); [02:13].
- 🧪 Prueba de Flujo Completo de Depuración: Llevamos a cabo un ensayo completo de eliminación masiva en caliente desde el panel administrativo [04:33]. Confirmamos que tanto la fila de la cuadrícula de DataTables como los registros en la base de datos física y las imágenes del directorio del servidor se purgan sincrónicamente en un solo clic [04:43, 04:58].
🗄️ Próximo paso
Con la acción de borrado operativo y el flujo CRUD multiidioma para la entidad Mascotas cerrado al 100%, nuestra tabla ha quedado completamente limpia. Para continuar con las pruebas de internacionalización y paginación masiva sin tener que rellenar los formularios de forma manual, en la próxima lección (Capítulo 23) introduciremos el uso de herramientas de automatización de datos, diseñando un Model Factory y un Seeder en Laravel para sembrar cientos de registros ficticios multiidioma estructurados en formato JSON. ¡Nos vemos en el próximo video! 🐾