我正在努力建立一个正确的验证来验证两个日期输入和两个时间输入。到目前为止,这是我的 html 代码:
<div class="form-group">
<label for="name" class="control-label">Start date</label>
<input type="date" class="form-control" name="start_date">
</div>
<div class="form-group">
<label for="name" class="control-label">Start time</label>
<input type="time" class="form-control" name="start_time">
</div>
<div class="form-group">
<label for="name" class="control-label">End date</label>
<input type="date" class="form-control" name="end_date">
</div>
<div class="form-group">
<label for="name" class="control-label">End time</label>
<input type="time" class="form-control" name="end_time">
</div>
如您所见,您可以输入分开的开始日期和开始时间以及结束日期和结束时间。这可能会导致许多逻辑错误,例如结束日期 + 结束时间在开始时间 + 开始日期之前,或者结束日期在开始时间之前。
我想允许以下组合(如果没有设置 start_time,它应该自动设置为 00:00,如果没有设置 end_time,它应该自动设置为 23:59):
- 开始日期
- 开始日期和开始时间
- 结束日期
- 结束日期和结束时间
- 开始日期和结束日期
- 开始日期 & 开始时间 & 结束日期
- 开始日期和结束日期
- 开始日期 & 开始时间 & 结束日期 & 结束时间
这是我到目前为止所得到的验证器规则:
'start_date' => ['required_if:start_time,date_format:H:i', 'date', 'nullable'],
'start_time' => ['date_format:H:i', 'nullable'],
'end_date' => ['required_if:end_time,date_format:H:i', 'date', 'nullable'],
'end_time' => ['date_format:H:i', 'nullable'],
但是,它并没有真正起作用,我不知道如何完成它。关于如何解决我的问题的任何提示和想法?
在我验证了输入之后,开始和结束日期(+时间)也应该在逻辑上进行验证。开始日期 (+time) 必须早于结束日期 (+time)。