验证选择下拉列表.只有一个选项是正确的提交表单



所以我有一个简单的带有文本框的表单,下拉菜单包含 2 个选项和一个提交按钮。我有一个包含两个值的下拉列表 - 谷歌和必应。如果您选择必应,我希望它引发错误。我为仅接受字母的文本框制作了类似的东西。如果将数字添加到输入框,则会显示正则表达式错误。如何为我的下拉列表获取此信息?

我的刀片文件:

<form action="{{route('redirectURL')}}" method="GET">
<input {!!$errors->has('searchText') ? 'style="background-color: #faa"' : '' !!} type="text" 
value=" 
{{old('searchText')}}" name="searchText" pattern="[a-zA-Z0-9]{5,30}" title="Vain [a-zA-Z0-9]{5,30}         
hyväksytään"> <input type="submit" name="submit"><br>
@error('searchText')
<div style="background-color: lightgrey; width:230px;">
{{$message}}
</div>
@enderror
<select name="searchEngine">
<option name="Google" value="http://www.google.com/search?q=" @if(old('searchEngine') ==         
"http://www.google.com/search?q=") {{'selected'}} @endif >Google</option>
<option name="Bing" value="http://www.bing.com/search?q=" @if(old('searchEngine') ==                 
"http://www.bing.com/search?q=") {{'selected'}} @endif>Bing</option>
</select>
@error('Google')
<div style="background-color: lightgrey; width:230px">
{{$message}}
</div>
@enderror

还有我的控制器:

public function searchURL(){
$validator = request()->validate([
'searchText'=> ['required','regex:/^[a-zA-Z]{5,30}$/'],
'Google' => 'required'
],
['searchText.regex' => 'I accept only letters!',
'Google.required' => 'Dont use Bing... use Google!'
]
);

文本框正则表达式错误显示正常,但我无法弄清楚如何为 Bing 选项制造相同类型的错误。

在 html 表单中选择的工作方式不同

<select name="engine">
<option value="bing">bing</option>
</select>

在上面的代码中,当您提交时 请求中的数据将是

engine = bing

所以你必须对'engine' key进行验证. 在代码中,您必须对searchEngine进行验证

选项一:"in"采用逗号分隔的可接受值列表$rules = [ 'engine' => 'in:google', ];

添加此规则并检查它是否有效,根据您的要求更改键值

https://laravel.com/docs/5.5/validation#rule-in

最新更新