104 Update configuraciones del Sistema con LARAVEL(PHP-MySql) FullStack
Duración: 18 minDescripció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:
- 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].
- 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].
- 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.
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️