phplaravellaravel-5custom-validatorslaravel-validation

How add Custom Validation Rules when using Form Request Validation in Laravel 5


I am using form request validation method for validating request in laravel 5.I would like to add my own validation rule with form request validation method.My request class is given below.I want to add custom validation numeric_array with field items.

  protected $rules = [
      'shipping_country' => ['max:60'],
      'items' => ['array|numericarray']
];

My cusotom function is given below

 Validator::extend('numericarray', function($attribute, $value, $parameters) {
            foreach ($value as $v) {
                if (!is_int($v)) {
                    return false;
                }
            }
            return true;
        });

How can use this validation method with about form request validation in laravel5?


Solution

  • Using Validator::extend() like you do is actually perfectly fine you just need to put that in a Service Provider like this:

    <?php namespace App\Providers;
    
    use Illuminate\Support\ServiceProvider;
    
    class ValidatorServiceProvider extends ServiceProvider {
    
        public function boot()
        {
            $this->app['validator']->extend('numericarray', function ($attribute, $value, $parameters)
            {
                foreach ($value as $v) {
                    if (!is_int($v)) {
                        return false;
                    }
                }
                return true;
            });
        }
    
        public function register()
        {
            //
        }
    }
    

    Then register the provider by adding it to the list in config/app.php:

    'providers' => [
        // Other Service Providers
    
        'App\Providers\ValidatorServiceProvider',
    ],
    

    You now can use the numericarray validation rule everywhere you want