laraveleloquentlaravel-5laravel-nova

how to add custom validation and message in laravel nova for one field


I want to add custom validation for one field in laravel nova resource file.

I have one field in db which is service_id in the service table and I have nova resource file for the same table. On create service I want to get data using service_id from other table and check data is present or not and if present then I don't want to enter that service_id in table.

So can someone help me how can I write custom validation rules in laravel nova resource file?


Solution

  • Using the following command, you can create a custom rule class:

    php artisan make:rule CustomRule
    

    Inside the fields function in your resource:

    Text::make('Service ID', 'service_id')->rules(new CustomRule());
    

    Go back to your rule file and inside the passes function:

    public function passes($attribute, $value)
    {
        //You can check inside the database if your record exists
        return false; //if the rule should stop the user
        return true; //if everything is fine and you want the user to proceed.
    }
    
    public function message()
    {
        return 'Return your custom error message';
    }