Is there any difference when I throw ValidationException
manally and when ValidationException
is thrown by laravel from FormRequest.
Following code will clear the problem
UserController.php
public function checkEmailExists(Request $request){
try {
$validation = Validator::make($request->only('email'), [
'email' => 'required|email|exists:users,email',
]);
if ($validation->fails()) {
throw (new ValidationException($validation));
}
} catch (\Exception $exception){
return $exception->render(); //nothing is returned/displayed
}
}
Handler.php
public function render($request, Throwable $exception)
{
dd($exception instanceof Exception);
}
From the UserController
I am throwing ValidationException
manually and in Handler.php
render method I am checking the $exception
is an instance of Exception
. So If I throw ValidationException manually
then
dd($exception instanceof Exception); //gives false
But when I use UserStoreRequest (FormRequest)
UserController.php
public function checkEmailExists(UserStoreRequest $request){
//Exception thrown by laravel if validation fails fro UserStoreRequest
}
then in Handler.php render()
method
dd($exception instanceof Exception); //gives true
1:- Why it has different behavior when I throw ValidationException manally and when ValidationException is thrown by laravel from FormRequest?
2:- If I throw ValidationException manually then in the catch block I get the following error
Error {#3627
#message: "Call to undefined method Illuminate\Validation\ValidationException::render()"
#code: 0
#file: "myproject/app/Http/Controllers/UserController.php"
#line: 33
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire