Required_if laravel с несколькими значениями

У меня есть раскрывающееся меню, подобное этому

<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">

Я хочу в laravel

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

но если я выбираю вариант 1, то stext по-прежнему требуется. Зачем? как я могу это исправить?

спасибо раньше.

Ответ 1

Я думаю, что проверка require_if принимает только одно значение за раз. Попытайтесь изменить свой код проверки, как показано ниже:

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

EDIT: Проверьте ответ LePhleg, он более чист. Во время ответа это было невозможно, просто проверьте вопрос, он использовал тот же метод, но не работал.

Ответ 2

Вам просто нужно передать все значения в качестве параметров, разделенных запятой:

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

Ответ 3

Вы можете продолжить проверку валидации. вы можете определить пользовательское закрытие, как в приведенном ниже примере

public static myfunction(){
   $input = \Input::only('selection','stext');
   $rule = array(
      'selection' => 'required'
   );
$validator->sometimes('stext', 'required', function($input){
    return (($input->selection == 1) || ($input->selection == 2));
});
   $validate = \Validator::make($input,$rule);
}

Ответ 4

Попробуй это

если значение одно совпадения используется таким образом

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

если у вас есть несколько значений, которые используются таким образом (разделенные запятой)

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

для получения дополнительной информации см. документацию required_if