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