我有一个小问题,不知道如何解决。
我的请求中有这样的选择
<select class="form-control" name="start_time" id="time">
<option>Aanvangstijd *</option>
<option value="11:00" id="time">11:00</option>
<option value="11:30" id="time">11:30</option>
<option value="12:00" id="time">12:00</option>
</select>
但是第一个选项<option>Aanvangstijd *</option>
不应该通过我请求中的验证,但它当然通过了,因为它有一个值。
这是我的请求
public function rules()
{
return [
'name' => 'required',
'phone' => 'required',
'email' => 'required',
'msg' => 'required',
'start_time' => 'required',
'avg' => 'required',
];
}
所以我的问题是,我如何才能让它工作,它只有在通过了一个不是'Anvangtijd*`的选项时才通过这个验证
Laravel有很好的验证规则,因此您可以严格而具体地确定输入中允许的内容,包括日期/时间格式。在我看来;start_time";输入
- 需要
- 成为字符串
- 共5个字符
- 并且是有效时间
所以,我们可以这样写:
public function rules()
{
return [
'name' => 'required',
'phone' => 'required',
'email' => 'required',
'msg' => 'required',
'start_time' => 'required|string|size:5|date_format:H:i',
'avg' => 'required',
];
}
也许你希望将时间范围限制在11:00到12:00之间,或者,特别是:
- 等于或在11:00之后
- 并且等于或在12:00之前
因此,您可以在验证中添加以下规则:
'start_time' => 'required|string|size:5|date_format:H:i|after_or_equal:11:00|before_or_equal:12:00'
此外,您可能希望限制";start_time";仅为11:00、11:30或12:00:
'start_time' => 'required|string|size:5|date_format:H:i|after_or_equal:11:00|before_or_equal:12:00|in:11:00,11:30,12:00',
在和中,我们可以通过使用数组语法来提高可读性:
public
function rules()
{
return [
'name' => 'required',
'phone' => 'required',
'email' => 'required',
'msg' => 'required',
'start_time' => [
'required',
'string',
'size:5',
'date_format:H:i',
'after_or_equal:11:00',
'before_or_equal:12:00',
Rule::in(['11:00', '11:30', '12:00']),
],
'avg' => 'required',
];
}
还有一条建议:不要相信任何人,甚至不要相信你!即使你写了前端代码,并且(你认为(你100%确定你知道你的html表单将发送给你的后端,请使用良好、严格的验证规则。