Laravel Validation Error customise format of the Response
Currently accepted answer no longer works so i am giving an updated answer.
In the revelent FormRequest
use failedValidation
function to throw a custom exception
// add this at the top of your file
use Illuminate\Contracts\Validation\Validator;
use App\Exceptions\MyValidationException;
protected function failedValidation(Validator $validator) {
throw new MyValidationException($validator);
}
Create your custom exception in app/Exceptions
<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Contracts\Validation\Validator;
class MyValidationException extends Exception {
protected $validator;
protected $code = 422;
public function __construct(Validator $validator) {
$this->validator = $validator;
}
public function render() {
// return a json with desired format
return response()->json([
"error" => "form validation error",
"message" => $this->validator->errors()->first()
], $this->code);
}
}
This is the only way I found. If there is a better approach please leave a comment.
This works in laraval5.5, I don't think this will work in laravel5.4 but i am not sure.