Required_if laravel with multiple value

49,453

Solution 1

EDIT: As pointed out by LePhleg answer, there is a nicest syntax for this validation:

$rule = array(
  'selection' => 'required',
  'stext' => 'required_if:selection,2,3,
);

Old answer below:

I think that the require_if validation accept only one value per time. Try to change your validation code as below:

$rule = array(
  'selection' => 'required',
  'stext' => 'required_if:selection,2|required_if:selection,3',
);

EDIT: Check LePhleg answer, is more cleaner. At the time of the answer that was not possible, just check the question, he was using the same method but not worked.

Solution 2

You just have to pass all the values as parameters separated by comma:

$rules = array(
      'selection' => 'required',
      'stext'     => 'required_if:selection,2,3'
);

Solution 3

try this one

if single match value then used like that

'stext'     => 'required_if:selection,2'

if you have multiple value then used like that (separated by comma)

'stext'     => 'required_if:selection,2,3'

for more information see documentation required_if

Solution 4

You can go ahead with sometimes validation for laravel. you can define a custom closure as in the below example

public static myfunction(){
   $input = \Input::only('selection','stext');
   $rule = array(
      'selection' => 'required'
   );
   $validate = \Validator::make($input,$rule);
$validator->sometimes('stext', 'required', function($input){
    return (($input->selection == 1) || ($input->selection == 2));
});
}
Share:
49,453
Donny Akhmad Septa Utama
Author by

Donny Akhmad Septa Utama

Updated on July 09, 2022

Comments

  • Donny Akhmad Septa Utama
    Donny Akhmad Septa Utama almost 2 years

    I have a dropdown menu like this:

    <select name="selection">
       <option value="1">Option 1</option>
       <option value="2">Option 2</option>
       <option value="3">Option 3</option>
    </select>
    <input type="text" name="stext">
    

    I want the following in laravel:

    public static myfunction(){
       $input = \Input::only('selection','stext');
       $rule = array(
          'selection' => 'required',
          'stext' => 'required_if:selection,2,3',
       );
       $validate = \Validator::make($input,$rule);
    }
    

    But if I select option 1, stext is still required. Why? How can I fix it?

  • Donny Akhmad Septa Utama
    Donny Akhmad Septa Utama about 8 years
    thank you for your answer sir. but i want to make it so simple i can. because im not expert in laravel. thanks again. :-)
  • kjdion84
    kjdion84 over 6 years
    Nope. See @LePhleg answer. Way cleaner and proper.