Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Different validation rules for input based on another input value from FormRequest rules() method

Is it possible to validate an input field conditionally based on the value of another input?

For example, there is an input type which can have the values letters or numbers and then there is another field which contains the value input.

I want that the value input validation rule will be alpha if type is letters and numeric if type is numbers

I am already using the pipe type of validation in the rules method:

public function rules()
{
    return [
        "type" => 'required',
        "value" => 'required|min:1|max:255',
    ];
}
like image 841
pileup Avatar asked Sep 15 '25 13:09

pileup


1 Answers

You can use Rule::when($condition, $rules).

<?php

use Illuminate\Validation\Rule;

public function rules()
{
    return [
        'type' => ['required'],
        'value' => [
            'required',
            'min:1',
            'max:255',
            Rule::when($this->type === 'letters', ['alpha']),
            Rule::when($this->type === 'numbers', ['numeric']),
        ],
    ];
}
like image 149
shabandino Avatar answered Sep 17 '25 06:09

shabandino