51 Como eliminar carpetas privadas y publicas en el curso de LARAVEL (PHP y MySql) FullStack

Duración: 12 min
Módulo: 🧹 Mantenimiento del Sistema Lección 2 de 2

Descripción

🗑️ Lección 51: Cómo Eliminar Carpetas Privadas y Públicas

Este capítulo completa la funcionalidad de eliminación de carpetas abordando el problema de la persistencia de los archivos físicos en el servidor, incluso después de que sus registros fueran eliminados de la base de datos en modo cascada.

1. 📂 Eliminación del Directorio Físico

El instructor modifica la función destroy del CarpetaController para asegurar que las carpetas y su contenido se eliminen de ambos directorios de almacenamiento:

  • Identificación del Problema: En el capítulo anterior, al eliminar una carpeta, solo se eliminaban los registros de la base de datos (por la configuración on delete cascade), pero las carpetas físicas (tanto en el directorio privado como en el público) seguían existiendo [01:59].
  • Solución: Dentro de la función destroy($id) y antes de eliminar el registro de la base de datos, se añade la lógica de Laravel Storage para eliminar los directorios:
    • Se usa el método Storage::deleteDirectory() para eliminar la carpeta y todo su contenido [01:00].
    • Esta acción se aplica a la ruta de la carpeta dentro del directorio privado (ID) y dentro del directorio público (public/ID) [01:46].
  • Resultado: Se verifica que al eliminar una carpeta que contenía archivos compartidos (y, por lo tanto, directorios público y privado), ambas carpetas físicas son eliminadas del servidor, y los registros correspondientes desaparecen de la base de datos (modo cascada) [04:48].

2. 🛡️ Mensaje de Confirmación (Alerta)

Para evitar eliminaciones accidentales de carpetas con contenido valioso, se implementa una alerta de confirmación utilizando una librería JavaScript:

  • Necesidad: Dado que la eliminación de una carpeta borra automáticamente todo su contenido (modo cascada), es crucial asegurar que el usuario confirme la acción [07:59].
  • Implementación: Se utiliza un script de confirmación (similar al usado para la eliminación de usuarios) en la vista index.blade.php, que:
    • Muestra una alerta al hacer clic en el botón "Eliminar".
    • Personaliza el mensaje para advertir claramente al usuario: "Si eliminas la carpeta, todo el contenido se eliminará de forma automática" [10:27].
    • Solo si el usuario confirma (Sí), se envía el formulario y se ejecuta la acción destroy.

🏁 Próximo Módulo

Con la solución de conflictos de rutas, las funciones de compartir y la eliminación total de carpetas (Base de Datos + Archivos Físicos) completadas, el instructor anuncia la finalización de este módulo.