Laravel 5验证附加到规则

时间:2017-11-06 11:17:08

标签: laravel validation

我正在使用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
}

唯一的另一个选择是创建自定义验证规则并比较日期

2 个答案:

答案 0 :(得分:1)

无需将两个条件从|before_or_equal:end_date移除start_date。只有after_or_equal:start_date可以使用

使用required_with:foo,bar,...

试试这个

$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);