How to stop validation rules after first rule fail. what is laravel bail validation rule.
Laravel validation stop after first failure in single attribute(bail)
When you use multiple validation rules on single attribute and want to stop validation and throw error after first validation fail of that attribute use bail validation rule. This attribute rest rules not running after a validation fail.
App/Http/Controllers/UserController.php<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Validator; class UserController extends Controller { public function store(Request $request) { $validation = Validator::make($request->all(), [ 'email' => 'bail|required|unique:users|max:20|min:5', 'name' => 'required|max:100' ]); if($validation->fails()){ return $validation->errors(); } } }
In our example we assume that email attribute pass required rule but fail in unique rule than next max and min rule not running but name validaton run.
Laravel stop all attributes validation if a rule fail
When you want to stop all attributes validation running after a validation fail use stopOnFirstFailure method.
App/Http/Controllers/UserController.php<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Validator; class UserController extends Controller { public function store(Request $request) { $validation = Validator::make($request->all(), [ 'email' => 'bail|required|unique:users|max:20|min:5', 'name' => 'required|max:100' ]); if($validation->fails()){ return $validation->stopOnFirstFailure()->errors(); } } }