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'