I have this code for an API, testing with Postman:
public function register(Request $request)
{
$validated = $request->validate([
'name' => 'required|string',
'email' => 'required|string|unique:users,email',
'password' => 'required|string|confirmed'
]);
if($validated->fails()){
dd($validated->errors()->toArray());
}
$validated = Validator::make($request->all(), [
'name' => 'required|string',
'email' => 'required|string|unique:users,email',
'password' => 'required|string|confirmed'
]);
if ($validated->fails()) {
$errors = $validated->errors()->toArray();
dd($errors);
}
}
I haven't included at all the password_confirmation
field in the request.
Validation fails, as it should, but the first dd statement doesn't get printed and Postman shows the homepage.
If I comment the part using the validate
method on the $request
and leave only the part that uses Validator facade, dd works as it should, saying The password field confirmation does not match
.
Is it possible to debug if it fails using $request->validate
instead of the Validator facade?
It's not actually showing the home page; it's redirecting the user back to the previous page (which happens to be the home page, I suspect; if you look at your browser's network panel you'll see a 302 redirect), with validation errors in the session. Your code never gets to the
dd()
call as a result.https://laravel.com/docs/10.x/validation