Contenido del curso
Fundamentos de Laravel
- 3

Qué es Artisan y cómo automatiza Laravel
04:23 min - 4

Rutas básicas en Laravel con web.php
06:44 min - 5

Cómo retornar vistas Blade en Laravel
07:02 min - 6

Plantillas Blade para vistas sin código repetido
06:03 min - 7

Controladores en Laravel con Artisan
07:17 min - 8

Migraciones en Laravel como control de versiones
07:01 min - 9

Modelos y factories en Laravel con datos falsos
06:56 min - 10

Consultas a base de datos con Eloquent
08:26 min - 11

Relaciones entre tablas con belongsTo en Laravel
05:37 min
Manos a la obra con nuestro proyecto
- 12

Revisión de arquitectura MVC en Laravel
02:15 min - 13

Instala el login de Laravel con Breeze
05:41 min - 14

Rutas de login y logout en Laravel Breeze
04:22 min - 15

Rutas y vistas con Route::resource en Laravel
03:59 min - 16

Listado de posts con paginación en Laravel
04:36 min - 17

Formulario para eliminar registros en Laravel
04:53 min - 18

Vistas de creación y edición con formulario compartido
06:49 min - 19

Formulario CRUD reutilizable en Laravel
05:02 min - 20

Guardar registros con relaciones en Laravel
06:06 min - 21

Método update en Laravel sin reescribir código
01:44 min - 22

Validación de formularios en Laravel con old()
Viendo ahora - 23

Validación unique en Laravel sin duplicados
05:32 min
Trabajemos en el diseño web de nuestro proyecto
- 24

Diseño del header con Tailwind y Laravel
06:38 min - 25

Divisor con gradiente en Tailwind CSS
03:50 min - 26

Construye la vista home de tu blog en Laravel
06:36 min - 27

Sección destacada con posicionamiento absoluto en Tailwind
04:15 min - 28

Diseño de página de publicación con Tailwind
02:33 min - 29

Formulario de búsqueda con Laravel y LIKE
04:18 min - 30

Cómo detectar el problema N+1 en Laravel
06:12 min
Cierre
Validación de formularios en Laravel con old()
Resumen
Cuando un formulario se envía vacío, la base de datos lanza un error porque los campos no aceptan valores nulos. La validación en Laravel resuelve esto antes de que la petición llegue al modelo, y además mejora la experiencia del usuario al conservar lo que ya escribió. Aquí aprendes a aplicar reglas required, mostrar mensajes de error y mantener el texto previo con old().
¿Por qué necesitas una capa de validación en el controlador?
Sin validación, el sistema intenta guardar registros incompletos y la base de datos responde con errores poco amigables como el título no puede estar nulo o el body no puede estar nulo [0:25]. Peor aún, si envías un título repetido, aparece el error de registro duplicado [0:55], lo que rompe la experiencia.
La validación funciona como un filtro previo: revisa los datos antes de tocar la base de datos y devuelve mensajes claros al usuario. Se aplica tanto al crear como al editar, porque ambos flujos comparten las mismas reglas.
¿Qué hace
requireden Laravel? Marca un campo como obligatorio. Si llega vacío, Laravel detiene la petición y devuelve un error de validación sin tocar la base de datos.
¿Cómo aplicar reglas de validación en el controlador?
La configuración es directa. Dentro del método store y del método update del controlador usas la función validate sobre el objeto request y defines las reglas con un arreglo asociativo [1:25].
php $request->validate([ 'title' => 'required', 'body' => 'required', ]);
Con esto, el sistema bloquea el envío de cualquier formulario vacío. La misma regla se duplica en la acción de actualización para mantener consistencia entre crear y editar [1:55].
¿Cómo mostrar mensajes de error en la vista Blade?
Para que el usuario sepa qué corregir, agrega un mensaje de feedback junto a cada campo del formulario. Justo después de la etiqueta label, inserta un span con la directiva de errores de Laravel [2:20]:
blade <span class="text-sm text-red-500"> @error('title') {{ $message }} @enderror </span>
Repite el bloque para el campo body cambiando el nombre. Las clases text-sm y text-red-500 hacen que el mensaje sea pequeño y rojo, una convención visual que el usuario reconoce al instante.
¿Cómo conservar los datos escritos cuando falla la validación con old()?
Al fallar la validación, el formulario se recarga y, por defecto, se pierde lo que el usuario ya había escrito. Eso frustra. La función old() de Laravel recupera el valor anterior del campo y lo coloca de vuelta en el input [3:20].
En el atributo value de cada campo escribes:
blade value="{{ old('title', $post->title ?? '') }}"
El primer argumento es el nombre del campo. El segundo es el valor por defecto, que en una vista de edición proviene del registro de la base de datos. Así, si vienes de crear y fallas, ves lo que escribiste; si vienes de editar y fallas, ves el valor original o el modificado.
¿Para qué sirve
old()en Laravel? Recupera el valor que el usuario envió en la petición anterior. Es ideal para mantener el formulario lleno cuando la validación falla y evitar que se vuelva a escribir todo.
¿Qué pasa al editar y borrar un campo obligatorio?
Si entras a editar, borras el contenido del body y envías, el sistema mantiene el título original, muestra el mensaje el body es requerido y no toca la base de datos [4:30]. Ese es el comportamiento esperado: feedback inmediato, datos preservados, integridad protegida.
¿Qué conceptos clave dominas con esta validación?
Aquí están las piezas que se conectaron en el flujo:
- Validación en el controlador con
$request->validate(): bloquea peticiones inválidas antes de que lleguen al modelo [1:25]. - Regla
required: declara que un campo no puede ir vacío. - Directiva
@errorde Blade: imprime el mensaje de error asociado a un campo específico [2:35]. - Función
old(): recupera valores enviados previamente para no perder el trabajo del usuario [3:20]. - Clases utilitarias
text-smytext-red-500: estilizan el mensaje de error con tamaño pequeño y color rojo.
El siguiente paso natural es resolver el caso del título duplicado, que aparece cuando dos registros comparten el mismo valor único. Esa regla se trabaja con unique sobre la tabla correspondiente.
¿Ya aplicaste estas reglas en tu propio formulario? Cuéntame en los comentarios qué validaciones agregaste y si combinaste required con otras reglas como min, max o email.