En esta lección continuaremos agregando reglas de validación a nuestro formulario de registro, esta vez guiándonos mediante las pruebas automatizadas. También veremos cómo podemos utilizar múltiples reglas como email
o unique
para validar un mismo campo.
Repositorio
Ver el código de esta lección en GitHub
Notas
Retornar todos los campos desde validate()
Si queremos ejecutar la validación pero también retornar los campos que no estemos validando necesitamos agregar estos últimos al array. El método validate()
va a retornar todos los campos dentro del array, tengan o no reglas de validación siempre que estén presentes:
$data = request()->validate([ 'name' => 'required', 'email' => '', 'password' => '', ], [ 'name.required' => 'El campo name es obligatorio' ]);
Multiples reglas de validación
Podemos especificar multiples reglas de validación, si las dividimos con un caracter de barra vertical: |
. En el siguiente ejemplo no solo queremos que el campo correo_electronico
sea obligatorio sino que también contenga una dirección valida, para ello utilizamos la regla de validación email
:
$data = request()->validate([ 'name' => 'required', 'correo_electronico' => 'required|email', 'password' => '', ], [ 'name.required' => 'El campo name es obligatorio' ]);
En lugar de separar las reglas con una barra vertical, podemos pasar un array donde cada valor será el nombre de una regla diferente:
'correo_electronico' => ['required', 'email'],
En el caso de algunas reglas de validación, como unique
, debemos pasar diferentes parámetros:
'correo_electronico' => ['required', 'email', 'unique:users,email'],
En este caso especificamos que el campo email
debe ser único con respecto al campo email
de la tabla users
, para evitar que un usuario sea creado con un correo electrónico que pertenezca ya a otro usuario.
Nota como los parámetros se especifican con :
seguido de cada parámetro separado por comas.
Personalizar mensajes de validación
Podemos pasar mensajes personalizados para cada una de las reglas:
[ 'name.required' => 'El campo name es obligatorio', 'correo_electronico.email' => 'Por favor ingresa una dirección valida', 'correo_electronico.unique' => 'Ya existe un usuario con ese email' ]
Ejercicio
Agrega una regla de validación para comprobar que el campo password
contenga más de 6 caracteres.
Material relacionado
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Mostrar mensajes de errores de validación con Laravel Lección siguiente Formulario para la edición de usuarios en Laravel