Post Top Ad

Your Ad Spot

jueves, 7 de mayo de 2020

Laravel agregando errores de validación personalizados

Validar en Laravel puede ser realmente simple, por ejemplo, tome este ejemplo:
request()->validate([
    'due_date' => 'required',
    'template' => 'required'
]);
Esto validará esos datos en el objeto de solicitud y pasará una serie de reglas que validarán tanto la fecha de vencimiento como la plantilla existen y se establecen en el objeto de solicitud. Si la validación falla, se ejecuta automáticamente una redirección a la página anterior que pasa tanto la entrada del usuario como una serie de errores.
Para una validación simple, ¡esto es increíble! simple y efectivo, pero en los casos en que necesita agregar un mensaje de error personalizado al objeto de error, esto no se puede usar en su lugar, use la clase Validator y pase el objeto de solicitud y una matriz de reglas.
$validator = Validator::make(request()->all(), [
    'due_date' => 'required',
    'template' => 'required'
]);
Para agregar un error personalizado con este enfoque , se puede llamar a un método de errores-> add () :
if (request('event') == null) {
    $validator->errors()->add('event', 'Please select an event');
}
El método add acepta dos parámetros, el nombre personalizado y su valor.
Ahora, en este punto, no sucedería nada, ya que la validación no se ha ejecutado para completar esto, normalmente escribiría:
if ($validator->fails()) {
    return redirect('post/create')
                ->withErrors($validator)
                ->withInput();
}
Al llamar -> fail () se ejecuta la validación y se redirigirá con entrada y errores en caso de falla.
Esto se puede simplificar aún más escribiendo:
$validator->validate();
Que hace lo mismo pero automáticamente.
Poniendolo todo junto:
//setup Validator and passing request data and rules
$validator = \Validator::make(request()->all(), [
    'due_date' => 'required',
    'template' => 'required'
]);

//hook to add additional rules by calling the ->after method
$validator->after(function ($validator) {
	
    if (request('event') == null) {
    	//add custom error to the Validator
        $validator->errors()->add('event', 'Please select an event');
    }

});

//run validation which will redirect on failure
$validator->validate();
Ahora, para los casos en que se deben agregar errores personalizados, esto permite esto sin demasiado trabajo adicional.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas