Laravel 5.5 new feature - Custom Validation Rules with example

Laravel 5.5 new feature - Custom Validation Rules with example

In this tutorial, I will tell you the new features for adding custom validation rules in Laravel 5.5.

In Laravel 5.5, You can define a dedicated class to handle the validation.

In the previous Laravel version, There is still possibility to define custom validation using Validator::extend method but custom validation rule object is an excellent alternative solution.

You can generate a class for implementing custom validation rules in Laravel 5.5 by running new artisan command :

php artisan make:rule CustomValidationRule

After running above command, You will get a file CustomValidationRule.php in following path app/Rules/.

Class CustomValidationRule will have two methods passes and message

The passes method will have two method $attribute and $value that can be used to validate the field and message method return the respected error message when validation fails.

Let's have a example for age validation :

  1. <?php
  2. namespace App\Rules;
  3. use Illuminate\Contracts\Validation\Rule;
  4. class AgeValidationRule implements Rule
  5. {
  6. public function passes($attribute, $value)
  7. {
  8. return $value > 18;
  9. }
  10. public function message()
  11. {
  12. return ':attribute should be greater than 18!';
  13. }
  14. }

Now in the controller, you can define the custom validation rules with request in following way :

  1. public function store()
  2. {
  3. // Validation message would be "age should be greater than 18!"
  4. $this->validate(request(), [
  5. 'age' => [new AgeValidationRule]
  6. ]);
  7. }

You can also use the constructor to inject any further dependency if you want.

If you use custom validation rule then you can not pass a string with rules seperated by a comma. You will have to pass each rule as a single element in an array like this :

  1. public function store()
  2. {
  3. // Validation message would be "age should be greater than 18!"
  4. $this->validate(request(), [
  5. 'age' => ['required',new AgeValidationRule]
  6. ]);
  7. }

Click here to see the custom validation rules in previous Laravel version : Custom Validation Rules

Phone: (+91) 8800417876
Noida, 201301