30 🐾 Landing Page de Adopción de Mascotas Multi-Idioma con Bootstrap 5 y Laravel 13 Interfaz Pública
Duración: 13 minDescripción
🔍 Lección 30: Delete de Usuarios: Confirmación con SweetAlert2 Multiidioma y Eliminación Física del Avatar 🚀🗑️
En este trigésimo capítulo completamos de forma definitiva el ciclo completo del CRUD para el Módulo de Usuarios. Implementamos la acción de eliminación segura (destroy), detallando cómo conectar el evento reactivo en el frontend mediante SweetAlert2 internacionalizado para confirmar la acción, el proceso de borrado físico del avatar en el storage para evitar la acumulación de archivos huérfanos y el envío de respuestas flash de éxito hacia el listado principal.
🎯 Lo realizado en este capítulo
- 🛡️ Internacionalización de la Alerta Crítica de SweetAlert2: Añadimos la clase reactiva .btn-delete-user dentro de la columna de acciones en el index de usuarios. Programamos un script de escucha en JavaScript que intercepta el clic y despliega una ventana modal interactiva configurada con textos y botones de confirmación (¿Está seguro de eliminar este usuario?, Sí, eliminar, Cancelar) mapeados en sus variantes exactas en español, inglés y portugués.
- ⚙️ Refactorización del Método destroy() en el UserController: Programamos la lógica de destrucción en el controlador para procesar el parámetro de identificación del usuario. Implementamos la búsqueda estricta mediante $user = User::findOrFail($id); para tomar el control de la entidad y validar sus propiedades antes de proceder con la purga en la base de datos de MySQL.
- 🧼 Borrado Físico del Avatar en el Disco del Servidor: Implementamos una condicional de seguridad utilizando la fachada de almacenamiento de Laravel para evitar dejar archivos huérfanos. Mediante la directiva if (Storage::disk('public')->exists('avatars/' . $user->avatar)), el sistema comprueba la existencia real de la fotografía del perfil y ejecuta Storage::disk('public')->delete('avatars/' . $user->avatar);, limpiando el servidor antes de eliminar el registro.
- 🗑️ Purga del Registro y Despacho de Mensajes de Sesión Flash: Una vez removida la imagen física del storage, ejecutamos la directiva $user->delete(); para remover de forma permanente la fila y el objeto JSON de la biografía de la base de datos. Concluimos la operación redirigiendo al index y enviando la llave de sesión flash swal_user_deleted para que el frontend notifique el éxito en el idioma activo.
- 🧪 Prueba de Control de Eliminación en Caliente: Llevamos a cabo un ensayo de eliminación directa desde el panel administrativo en los tres idiomas. Confirmamos que tanto la fila del DataTable como el registro en la base de datos y la imagen del avatar en el directorio del servidor se purgan de forma sincronizada y segura.
🗄️ Próximo paso
Con el módulo de Usuarios completamente cerrado y protegido —abarcando listados en DataTables, inserciones complejas, cargas de avatar con limpieza física en el storage y biografías multiidioma en formato JSON—, los dos pilares principales de la administración están listos. En la próxima lección (Capítulo 31), iniciaremos una fase crucial del sistema: el Módulo de Configuración Global y Preferencias del Sistema, donde aprenderemos a gestionar parámetros clave del sitio web de forma dinámica y traducible. ¡Nos vemos en el próximo video! 🐾