21 Edit y Update de Mascota Multilingüe en Laravel: Formulario con Tabs, JSON y AdminLTE Paso a Paso

Duración: 11 min
Módulo: Lógica CRUD Avanzada, Storage y Automatización de Pruebas Lección 1 de 3

Descripción

🔍 Lección 21: Edit y Update de Mascota Multilingüe en Laravel: Formulario con Tabs, JSON y AdminLTE Paso a Paso 🚀🛠️

En este vigésimo primer capítulo implementamos la lógica de edición y actualización de datos para nuestro sistema multiidioma. Explicamos cómo reutilizar la estructura de rejillas de Bootstrap y pestañas de AdminLTE para maquetar el formulario de edición, cómo recuperar y renderizar de forma segura textos traducidos individuales usando getTranslation() y el proceso para reemplazar archivos del almacenamiento eliminando remanentes físicos en el servidor.

🎯 Lo realizado en este capítulo

  • 📐 Estructuración y Estética del Formulario de Edición (edit): Reutilizamos la arquitectura base del formulario de creación para construir la vista edit.blade.php [00:50]. Para dar una mejor experiencia de usuario y coherencia visual con el panel AdminLTE, modificamos los estilos de los contenedores cambiando el esquema de color azul corporativo (usado para inserciones) a un tono verde informativo enfocado en procesos de edición [05:47, 05:54].
  • 🧬 Extracción de Sub-llaves JSON con getTranslation(): Al cargar los inputs del formulario dentro de cada pestaña idiomática (ES, EN, PT), implementamos el método nativo del paquete de Spatie $pet->getTranslation('campo', 'idioma') [01:47, 02:10]. Esto nos permite extraer y pintar de manera limpia únicamente el valor de texto correspondiente a la sub-llave del idioma del Tab (ej. name_en), combinándolo con el helper old() para evitar pérdidas de datos en caso de fallos de validación HTTP [02:19, 02:27].
  • 🎛️ Inclusión de Control de Estados y Rutas en el Backend: Enrutamos los flujos de persistencia en routes/web.php separando la directiva de renderizado GET del envío de actualización bajo el método seguro PUT [03:31, 03:42]. Incorporamos en el formulario un nuevo selector exclusivo de edición para gestionar el estado de disponibilidad del registro (Disponible, Adoptado, En reserva), el cual se inicializa de forma automatizada por el sistema al registrarse la mascota [07:55, 08:03].
  • ⚙️ Refactorización del Método update() en el Controlador: Programamos la lógica del método update(Request $request, $id) dentro de PetController [08:38]. En lugar de generar una nueva instancia del modelo, localizamos el registro existente mediante $pet = Pet::findOrFail($id);, aplicamos el mismo bloque estricto de validaciones multiidioma y mapeamos los nuevos inputs traducidos mediante sentencias estructuradas setTranslation() antes de persistir los cambios con $pet->save() [08:52, 10:53].
  • 🧼 Depuración y Limpieza Física de Imágenes en el Almacenamiento: Optimizamos la gestión de archivos adjuntos agregando una condicional de reemplazo en el servidor [09:16]. Si el usuario carga una nueva fotografía en el formulario, el controlador invoca la directiva Storage::disk('public')->delete($pet->image); para remover físicamente del disco local la imagen obsoleta antes de procesar y escribir el nuevo archivo en la ruta /public/pets, evitando la acumulación de archivos basura [09:24, 10:33].

🗄️ Próximo paso

Con los formularios de creación, visualización y edición multiidioma completamente operativos y vinculados a persistencias JSON en la base de datos, nuestro CRUD está casi cerrado. En la próxima lección (Capítulo 22), abordaremos la última acción del controlador: el método de destrucción (destroy), programando alertas interactivas de confirmación con SweetAlert2 para eliminar registros de forma segura y remover sus archivos asociados. ¡Nos vemos en el próximo video! 🐾