En esta lección del Curso de Laravel 5.5 desde cero, aprenderemos cómo validar datos provenientes de una petición HTTP (por ejemplo datos enviados a través de un formulario), utilizando el componente de validación que incluye el framework Laravel, además guiaremos el desarrollo a través el uso de pruebas automatizadas.

Repositorio

Ver el código de esta lección en GitHub

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

Dentro de la prueba comprobamos que la sesión contiene un error para el campo name utilizando assertSessionHasErrors:

El método assertSessionHasErrors espera que exista un campo name en el listado de errores de la sesión, independientemente del contenido o mensaje de este error. Sin embargo podemos indicar cual esperamos que sea el contenido o mensaje pasando un array de pares clave-valor en lugar de únicamente el nombre del campo:

Con assertDatabaseMissing verificamos que el registro no se esté guardando en la base de datos, al finalizar la petición ejecutada durante el método de prueba:

Además podemos utilizar el método assertEquals en lugar de assertDatabaseMissing para comprobar que el usuario no está siendo guardado en la base de datos. A este método le pasamos el valor esperado como primer argumento y como segundo argumento pasamos el número de usuarios en la base de datos, utilizando el método count que provee Eloquent:

En este caso el número de usuarios en la base de datos retornado por User::count() debería ser cero ya que dentro de la prueba estamos utilizando el trait RefreshDatabase.

Pasar errores a la sesión

Desde el controlador, utilizando el método withErrors podemos pasar un array de errores al realizar una redirección. Dichos errores serán almacenados en la sesión:

Validación automática con validate()

Podemos llamar al método validate() en el objeto request pasando como valor un array asociativo donde cada llave será el nombre de cada campo esperado y el valor una cadena con las reglas de validación:

Pasando otro array como segundo argumento podemos especificar los mensajes de los errores. Al nombre del campo debemos anexar el nombre de la regla de validación (en este caso required y nota que “name” y “required” están separados por un punto):

Únete a la discusión

Regístrate en Styde y obtén una invitación a nuestro Slack.

Lección anterior Creación de formulario para agregar usuarios con Laravel Lección siguiente Mostrar mensajes de errores de validación con Laravel