Validación con Laravel, aclaración

Si quieres hacer una validación normal, por ejemplo de un formulario, que si falla vuelva a él, con los errores y los datos, usamos validator::make

Validator::make($request->all(), $rules)->validate();

Si queremos añadir una regla propia de validación, usamos esto mismo pero con after:

Validator::make($request->all(), $rules)->after(function ($validator) use ($request){
    if (session('captcha') != $request->input('captcha')) {
        $validator->errors()->add(
            'captcha', trans('Código incorrecto')
        );
    }
})->validate();

Y que pasa si cuando sucede un error y mostramos los errores, en vez de los nombres de los campos del formulario queremos poner otra cosa, como un nombre más descriptivo:

Validator::make($request->all(), $rules)->setAttributeNames(['idField' => trans('NOmbre más descripticvo del campo')])->validate();

Y si al mostrar los errores en vez de usar los mensajes por defecto queremos personalizar los mensajes de error:

$msg = [
    'required' => 'Es necesario que rellenes :attribute'
];
Validator::make($request->all(), $rules, $msg)->validate();

Si cuando falle, queremos hacer otra cosa, que no sea volver a la página anterior:

$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) { ... }

Reglas de validación aquí