104 Update configuraciones del Sistema con LARAVEL(PHP-MySql) FullStack

Duración: 18 min
Módulo: 📝 Historial Clínico, Configuraciones y Reportes Lección 5 de 23

Descripción

✏️ Lección 104: Edición y Actualización de las Configuraciones del Sistema

Esta lección detalla la implementación de las funciones de edición y actualización para el módulo de configuraciones, asegurando que el administrador pueda modificar tanto los datos de texto como el logotipo del sistema de manera eficiente y segura en Laravel.

1. 🔍 Lógica del Método edit (Recuperación de Datos)

El primer paso es cargar los datos existentes en el formulario de edición.

  • Búsqueda del Registro: El método edit del ConfiguracionesController recibe el ID del registro y utiliza Configuracion::find($id) para obtener el objeto de configuración [01:30].
  • Retorno a la Vista: El objeto $configuracion se pasa a la vista edit.blade.php.

2. 📝 Adaptación del Formulario de Edición

La vista edit.blade.php es una adaptación del formulario de creación con ajustes clave para la actualización.

  • Pre-llenado de Datos: Se utiliza la variable $configuracion para que todos los campos de texto (Nombre, Dirección, Teléfono, Correo) muestren el valor actual mediante el atributo value del input [04:33].
  • Visualización del Logotipo Actual: Se utiliza la misma lógica de URL vista en el index y show para mostrar la imagen guardada al lado del campo de subida de archivo, permitiendo al administrador ver qué logo está activo antes de cambiarlo [06:06].

Configuración de la Ruta

El formulario de edición debe apuntar al método update y utilizar el protocolo RESTful correcto:

  • Ruta de Acción: La acción del formulario se dirige a la ruta de actualización enviando el ID del registro.
  • Método: Se utiliza el helper de Blade @method('PUT') para simular una petición PUT o PATCH (actualización) [04:00].
  • Tipo de Codificación: Se mantiene el atributo enctype="multipart/form-data" en la etiqueta <form> para permitir la subida opcional de un nuevo archivo de imagen [03:51].

3. 🛡️ Lógica del Método update (Actualización)

El método update es más complejo, ya que debe manejar la actualización de la imagen de forma condicional.

A. Exclusión de required para el Logotipo [11:19]

  • Validación Flexibles: Para el campo logo, se elimina la validación required en el método update. Esto es esencial porque el administrador puede querer modificar solo el teléfono o la dirección sin tener que volver a subir la imagen que ya tiene el sistema.

B. Lógica Condicional para el Logotipo [12:40]

Dentro del controlador, se utiliza una sentencia if para determinar si el administrador ha subido un nuevo archivo:

  • if ($request->hasFile('logo')): Si existe un nuevo archivo en la petición:
    1. Eliminar Antiguo Logotipo: Se utiliza la fachada Storage::disk('public')->delete(...) para eliminar el archivo de imagen que estaba previamente guardado en el servidor, evitando así la acumulación de archivos obsoletos [16:39].
    2. Guardar Nuevo Logotipo: Se almacena el nuevo archivo utilizando el método store() (como se hizo en el create), el cual genera un nuevo nombre de archivo encriptado [13:45].
    3. El nuevo nombre encriptado se asigna al campo logo en el modelo.
  • Si No Hay Nuevo Archivo: La lógica simplemente omite el bloque if, manteniendo el valor (nombre de archivo) existente en el modelo y en la base de datos.

C. Guardado Final

  • Finalmente, después de manejar el logotipo (o no), se actualizan los campos de texto con $configuracion->campo = $request->campo y se guarda el registro en la base de datos con $configuracion->save() [12:20].
  • El usuario es redirigido a la vista index con un mensaje de éxito.