Contenido del curso

Manos a la obra con nuestro proyecto

Formulario CRUD reutilizable en Laravel

Resumen

Construir un formulario en Laravel que sirva tanto para crear como para editar publicaciones es una de las tareas más comunes en cualquier CRUD. Aquí aprendes a configurar los controles del formulario, manejar el token csrf, vincular valores dinámicos y resolver el error que aparece cuando la variable $post no existe en la vista de creación.

¿Cómo se estructura un formulario seguro en Laravel?

Todo formulario en Laravel necesita una primera línea innegociable: la directiva @csrf. Sin ella, el framework rechaza la petición porque no reconoce el origen del envío.

Esta protección evita ataques de tipo Cross Site Request Forgery, donde un tercero intenta enviar datos en nombre del usuario. Laravel inyecta un token único en cada formulario y lo valida al recibirlo.

¿Qué hace @csrf en Laravel? Inserta un token oculto que valida que el formulario fue generado por tu propia aplicación. Si falta, Laravel devuelve un error 419.

Después del token, defines la estructura visual con clases utilitarias: texto en mayúscula, gris nivel 700 y tamaño pequeño para las etiquetas [01:00]. Estas clases vienen de Tailwind y mantienen consistencia entre las vistas.

¿Cómo vincular los valores del modelo a los inputs?

El truco para que un mismo formulario funcione en crear y editar está en el atributo value de cada control. Para el campo título, asignas $post->titulo directamente, y Laravel se encarga de poblar el input cuando existe el registro.

Para el campo de contenido, usas un textarea con cinco filas, sin atributo id ni cols, y dentro colocas $post->body [02:10]. Las clases de diseño se replican: bordes redondeados, border gris nivel 200, ancho completo y margen inferior nivel 4.

¿Qué pasa al editar una publicación existente?

Cuando entras a la ruta de edición, el controlador pasa el modelo $post a la vista. Los inputs leen sus propiedades y muestran los valores actuales listos para modificar. Hasta aquí todo fluye.

¿Y por qué falla al crear un nuevo post?

En la vista de creación no existe ningún $post porque el registro aún no se ha guardado. Si intentas acceder a $post->titulo, Laravel lanza el error Undefined variable $post.

La solución es elegante: desde el controlador, pasa una instancia vacía o nula del modelo a la vista de creación. Así, el formulario interpreta los valores como cadenas vacías y se renderiza sin romperse.

¿Cómo reutilizo un formulario para crear y editar? Pasa siempre la variable $post desde el controlador. En crear, envíala como instancia vacía; en editar, con los datos del registro. El formulario no necesita lógica condicional.

¿Cómo agregar navegación y botón de envío al formulario?

Un formulario completo necesita una salida y una acción. Dentro de un div con clases flex, espaciado entre extremos y alineación al centro, colocas dos elementos clave.

  • Un enlace de retorno con clase de color índigo nivel 600 que apunta al index y muestra el texto volver.
  • Un input de tipo submit con valor enviar, reutilizando las mismas clases del botón de eliminar para mantener coherencia visual.
  • Un contenedor flex que distribuye ambos elementos en esquinas opuestas con alineación centrada.

Esta disposición permite al usuario fluir entre ventanas sin perder contexto. Volver al listado o confirmar los cambios queda a un clic de distancia.

¿Qué clases de Tailwind hacen flexible al contenedor?

Las tres clases que conviertes al div en un contenedor responsivo son: flex para activar el modelo flexible, justify between para empujar los elementos a cada esquina, y items center para alinearlos verticalmente al centro [03:20].

El resultado es un pie de formulario limpio donde el enlace de retorno queda a la izquierda y el botón de envío a la derecha, ambos perfectamente alineados.

Conceptos y habilidades clave de la clase

La directiva @csrf [00:35] genera el token de seguridad obligatorio en formularios POST, PUT y DELETE dentro de Laravel. Sin él, cualquier envío termina en un error 419.

La vinculación de valores dinámicos con $post->propiedad [01:30] permite que un mismo blade funcione para edición y creación. Es la base del patrón de formularios reutilizables.

El manejo del error variable indefinida [03:50] se resuelve pasando una instancia vacía del modelo desde el método create del controlador. Esta técnica elimina la necesidad de duplicar vistas.

Las clases utilitarias de Tailwind como rounded, border gray 200, w full, mb 4, flex, justify between e items center mantienen consistencia visual entre crear, editar y eliminar.

Ahora te toca a ti completar el formulario en tu editor y probar ambos flujos. ¿Lograste resolver el error de la variable $post con la instancia vacía? Cuéntame en los comentarios cómo te fue.