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

Suscríbete a nuestro boletín

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

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

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

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