In this post, I will show you how to customize the form request validates failed response correctly, it’s really simple but useful.
<?php
namespace App\Http\Requests\Concerns;
use App\Enums\Response;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\JsonResponse;
use Illuminate\Validation\ValidationException;
trait HandleFailedValidation
{
protected function failedValidation(Validator $validator): HttpResponseException
{
if ($this->expectsJson()) { // if you're json
$errors = (new ValidationException($validator))->errors(); // take all errors as array.
throw new HttpResponseException(
new JsonResponse([
'status' => Response::FAILED_VALIDATION, // customize status code.
'errors' => $errors,
]) // if needs, passing the http status code.
);
}
parent::failedValidation($validator);
}
}