Required_if laravel具有多个值

时间:2016-03-29 03:36:37

标签: php validation laravel laravel-4 controller

我有这样的下拉菜单

<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。为什么? 我怎么能解决它?

之前感谢。

4 个答案:

答案 0 :(得分:28)

我认为require_if验证每次只接受一个值。 尝试更改验证码,如下所示:

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

编辑: 检查LePhleg的答案,更清洁。 在答案不可能时,只需检查问题,他使用相同的方法但没有工作。

答案 1 :(得分:26)

您只需将所有值作为以逗号分隔的参数传递:

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

答案 2 :(得分:1)

尝试这个

如果是单个匹配值,则可以这样使用

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

如果您有多个值,请像这样使用(用逗号分隔)

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

有关更多信息,请参见文档required_if

答案 3 :(得分:0)

您可以继续进行laravel验证。您可以定义自定义闭包,如下例

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);
}