Php 如果具有多个值的laravel,则需要

Php 如果具有多个值的laravel,则需要,php,validation,laravel,laravel-4,controller,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">

我有这样一个下拉菜单:

<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">
但是如果我选择选项1,
stext
仍然是必需的。为什么? 如何修复它?

编辑: 正如LePhleg answer所指出的,这种验证有一种最好的语法:

$rule = array(
  'selection' => 'required',
  'stext' => 'required_if:selection,2,3,
);
下面的旧答案:

我认为,如果验证每次只接受一个值,则需要_。 尝试按以下方式更改验证代码:

$rule = array(
  'selection' => 'required',
  'stext' => 'required_if:selection,2|required_if:selection,3',
);
编辑: 检查LePhleg答案,更干净。
在回答不可能的问题时,只需检查问题,他使用的是相同的方法,但不起作用。

您可以继续验证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);
}

您只需将所有值作为参数传递,参数之间用逗号分隔:

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

如果是单个匹配值,那么就这样使用

'stext'     => 'required_if:selection,2'
如果您有多个值,则使用类似的(用逗号分隔)


有关更多信息,请参阅文档

谢谢您的回答,先生。但我想让它变得如此简单。因为我不是拉维的专家。再次感谢。:-)不。见@LePhleg答案。方式干净且正确。您的代码是正确的,请检查所有代码。
'stext'     => 'required_if:selection,2'
'stext'     => 'required_if:selection,2,3'