Laravel表单验证器如何验证日期/时间区间?
laravel表单验证器自带了date、date_equals、date_format三个日期时间验证器,但是都是针对单一日期值的,在实际开发中,我们经常会遇到列表页按时间范围查询数据,这个日期值可能是这样的
'2022-06-01,2022-07-30'
我尝试使用date_format验证器来验证它
//初次尝试 逗号,会被识别成验证器参数分隔符,只有第一个Y-m-d生效
'month' => 'required|date_format:Y-m-d,Y-m-d',
/*
* 尝试改变,将 ‘Y-m-d,Y-m-d’ 用引号包起来,看能不能作为一个参数传递给date_format验证器
* 依旧失败,laravel依旧只之别了最前面的Y-m-d作为规则进行验证
*/
'month' => 'required|date_format:\'Y-m-d,Y-m-d\'',
目前能用的方案,快速验证器是用不了了,只能手动将daterange字符串手动分割,然后传递给验证器
list($date_start, $date_end) = explode(',', $daterange);
$validator = Validator::make([
'abc' => $request->input('abc'),
'date_start' => $date_start,
'date_end' => $date_end,
...其他参数
], [
'date_start' => 'required|date_format:Y-m-d,Y-m-d',
'date_end' => 'required|date_format:Y-m-d,Y-m-d',
...其他参数验证
]);
这显然不太优雅,有什么什么优雅的方式验证日期时间区间格式,甚至是验证起始范围
推荐文章: