Laravel 验证规则(如果值存在于另一个字段数组中)
2022-08-30 19:39:27
我在Laravel 5.4中工作,我有一个稍微具体的验证规则需求,但我认为这应该很容易实现,而不必扩展类。只是不知道如何做到这一点。
我想做的是,如果数组包含,则使表单字段成为必填字段。'music_instrument'
program
'Music'
我发现这个线程 如果在验证laravel的另一个选择字段中选择了值,如何设置要求?但它不是一个解决方案(因为它从未首先得到解决),它不起作用的原因是因为提交的数组索引不是恒定的(在索引提交结果时不考虑选中的复选框...)
我的案例看起来像这样:
<form action="" method="post">
<fieldset>
<input name="program[]" value="Anthropology" type="checkbox">Anthropology
<input name="program[]" value="Biology" type="checkbox">Biology
<input name="program[]" value="Chemistry" type="checkbox">Chemistry
<input name="program[]" value="Music" type="checkbox">Music
<input name="program[]" value="Philosophy" type="checkbox">Philosophy
<input name="program[]" value="Zombies" type="checkbox">Zombies
<input name="music_instrument" type="text" value"">
<button type="submit">Submit</button>
</fieldset>
</form>
如果我从复选框列表中选择一些选项,我可能会在我的值中产生此结果$request
[program] => Array
(
[0] => Anthropology
[1] => Biology
[2] => Music
[3] => Philosophy
)
[music_instrument] => 'Guitar'
看看这里的验证规则:https://laravel.com/docs/5.4/validation#available-validation-rules 我认为像他这样的东西应该工作,但我实际上什么也没得到:
$validator = Validator::make($request->all(),[
'program' => 'required',
'music_instrument' => 'required_if:program,in:Music'
]);
我希望这也能起作用,但没有运气:
'music_instrument' => 'required_if:program,in_array:Music',
思潮?建议?
谢谢!