Laravel stop validation running after first rule fail

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();
    }
  }
}
php laravel developer anmol sharma

Anmol Sharma

I am a software engineer and have experience in web development technologies like php, Laravel, Codeigniter, javascript, jquery, bootstrap and I like to share my deep knowledge by these blogs.

Random tutorial links