Validar formularios se ha vuelto más fácil con el tiempo para los desarrolladores web. En los primeros días, había algunos enfoques realmente torpes que tenía que implementar para obtener una validación básica. Sin embargo, las cosas son mucho más fáciles en estos días, y veremos cómo agregar una validación simple al envío de un formulario en Laravel. En nuestro último tutorial, obtuvimos un formulario bastante bueno configurado para permitirnos enviar un nuevo juego a nuestra base de datos de juegos. Desafortunadamente, todavía no hay ningún medio de validación. Eso significa que los usuarios pueden insertar fácilmente datos falsos o incluso en blanco. Arreglaremos esta deficiencia ahora mismo en este sencillo tutorial.


Validación del navegador del lado del cliente Html5

Antes de que incluso necesitemos implementar algo en el lado del servidor, sigamos adelante y agreguemos la validación del lado del cliente HTML5 a nuestro formulario. Es tan fácil como agregar un requiredatributo simple a las inputetiquetas de nuestro formulario. Mire las etiquetas destacadas a continuación para ver cómo lo hacemos.


recursos / vistas / juegos / create.blade.php

Tratar de enviar un formulario que no se ha completado correctamente ahora le da al usuario algunos comentarios sobre dónde puede haber perdido algo o haber cometido un error.
validación del lado del cliente html5 en acción


Agregar validación al store()método

La validación simple del navegador html5 es excelente, pero no es 100% infalible. Aún necesitará validar los datos en el lado del servidor antes de intentar insertar algo en la base de datos. Esto es realmente fácil de hacer en Laravel. Aquí agregamos algunas reglas de validación simples a nuestro store()método, usando el $this->validate()método en nuestro controlador.


aplicación / Http / Controllers / GamesController.php

Con el código resaltado arriba, ahora también tenemos cierta validación en el lado del servidor. Hay * muchas * reglas de validación disponibles para usted, pero solo queremos asegurarnos de que cada campo sea obligatorio. Además de esto, queremos que el título del juego sea único. No queremos agregar el mismo juego a la base de datos dos veces.


Visualización de errores si es necesario

Si la validación pasa, el store()método simplemente continúa con su negocio de insertar los datos proporcionados en la base de datos. Sin embargo, si hubo un problema, se completará una $errorsvariable y el usuario será redirigido al formulario de donde vino. Al llegar a esa variable, podemos mostrar los errores al usuario. Así es como podemos actualizar nuestro archivo de vista para manejar esta tarea.


recursos / vistas / juegos / create.blade.php

En una de nuestras publicaciones anteriores, agregamos The Legend of Zelda a la mesa de juegos en nuestra base de datos. Intentemos agregarlo nuevamente y veamos qué sucede.
validación del lado del servidor laravel en acción

¡Excelente! Entonces, aunque completamos todos los campos correctamente en el formulario y obtuvimos la validación del navegador del lado del cliente html5 para aprobar, recibimos un mensaje de error agradable que nos dice que el título que proporcionamos ya se ha tomado. Entonces, nuestra regla de validación que proporcionamos en el store()método de nuestro GamesController funcionó muy bien. Recuerde que especificamos que queremos un título único por la regla de 'título' => 'obligatorio | único: juegos' .


Evitar que el formulario borre datos

Todo funciona muy bien en este momento, pero ¿notó algo sobre los datos que habíamos ingresado en el formulario? Se fue. Si cometemos un error durante el proceso de completar el formulario, luego intentamos enviarlo, todos nuestros datos se borran al redireccionar. Ahora el usuario debe completar todos los campos del formulario nuevamente, en lugar de poder corregir el único error que pudo haber cometido. Veamos cómo recordar datos de formulario en nuestro archivo de vista agregando un atributo de valor y haciendo uso de la old()función que proporciona Laravel. Veamos cómo.


recursos / vistas / juegos / create.blade.php

función antigua de laravel para repoblar los datos del formulario

Esto es genial ahora. Hemos redirigido al formulario, pero los datos del formulario que escribimos originalmente se conservan. Definitivamente desea manejar cosas como esta para mejorar la experiencia del usuario. Tenga en cuenta que la old()función acepta un argumento del nombre del campo para repoblar. En otras palabras, cualquiera que sea el valor que se establece en el nameatributo para la inputetiqueta dada , debe ser el mismo valor pasado a la old()función.


Extraer errores de formulario a un parcial

El marcado que usamos en nuestro archivo create.blade.php para mostrar errores de formulario es un material bastante estándar que se puede usar en otros lugares. Tiene sentido extraer ese marcado a su propio parcial. Creemos un archivo en resources / views / partials llamado formerrors.blade.php y rellenemos con el marcado indicado.

Ahora en nuestro archivo create.blade.php lo incluimos así, y todo sigue funcionando como era de esperar.

Con estos pasos en su lugar, tenemos un pequeño sistema de validación decente en nuestra aplicación de base de datos de juegos. Terminemos agregando un juego más que sepamos que cumple con todos los requisitos para asegurarnos de que aún podemos agregar un nuevo juego a la base de datos como esperamos. Completamos los detalles de nuestro juego Metroid para ser enviado.
enviando juego nuevo

¡Parece que nuestra adición está funcionando muy bien!
los juegos se suman perfectamente

Con estos pasos implementados, ahora tenemos una validación que garantiza que los usuarios ingresen los datos correctos para enviarlos en nuestros formularios. Si las cosas van bien, agregamos los datos a la base de datos. Si las cosas no cumplen con los requisitos que especificamos, los usuarios reciben una lista de errores para corregir antes de volver a intentarlo.


Cómo validar los envíos de formularios en el resumen de Laravel

Este tutorial nos llevó un paso más adelante en nuestro aprendizaje de Laravel. Tomamos nuestra pequeña aplicación de juegos y primero agregamos una simple validación del lado del navegador html5 a nuestro formulario con el requiredatributo. A partir de ahí, también vimos cómo agregar validación en el lado del servidor haciendo uso del $this->validate()método que nos proporciona Laravel. Luego vimos que es necesario agregar algunas marcas a nuestro formulario para que podamos mostrar errores si falla la validación. Hicimos esto recorriendo el contenido de la $errorsvariable. Finalmente, vimos que dado que el marcado de error es un código repetible, podemos extraer ese marcado a un archivo de vista parcial que se puede reutilizar en otros formularios si es necesario. ¡Bravo!