我正在使用Laravel 5.4,我有2个日期字段。第一个是必需的,第二个是可选的。
当第二个日期字段为空时,我遇到验证问题。
我理解为什么,但只想在第二个日期不为空时运行before_or_equal
规则
$this->validate($request, [
'start_date' => 'required|date|before_or_equal:end_date',
'end_date' => 'nullable|bail|date|after_or_equal:start_date',
]);
如果日期字段为空,如何更新我的代码会忽略该规则?
我确实想过这个
if($request->has('end_date')) {
//do something
}
唯一的另一个选择是创建自定义验证规则并比较日期
答案 0 :(得分:1)
无需将两个条件从|before_or_equal:end_date
移除start_date
。只有after_or_equal:start_date
可以使用
试试这个
$this->validate($request, [
'start_date' => 'required|date',
'end_date' => 'required_with:start_date|nullable|bail|date|after_or_equal:start_date',
]);
答案 1 :(得分:0)
我会这样做:
$rules = [
'start_date' => 'required|date|before_or_equal:end_date',
];
if ($request->get('end_date') != '') {
$rules['end_date'] = 'required|date|after_or_equal:start_date';
}
$this->validate($request, $rules);