如果字段为空,如何忽略验证规则?

时间:2019-08-09 02:55:02

标签: php laravel laravel-5 laravel-validation

我有2条规则。但是我希望仅在输入退役日期后才能遵循before_or_equal规则。我该怎么做呢?有时不能解决这个问题。如果在退役日期没有输入,则必须能够输入enter_on而不会出现任何错误。使用这两个规则,由于retired_on的默认值为空白,因此一开始会出现错误。

'entered_on' => 'required|date_format:Y/m/d|before_or_equal:retired_on',
'retired_on' => 'date_format:Y/m/d|after_or_equal:entered_on',

2 个答案:

答案 0 :(得分:1)

使用nullable规则:

'retired_on' => 'nullable|date_format:Y/m/d|after_or_equal:entered_on',

答案 1 :(得分:0)

由于您说无法使用nullable或升级Laravel版本,因此始终可以将其分离出来并有条件地对该字段进行验证。

// your other input validations
$this->validate($request, [
    'entered_on' => 'required|date_format:Y/m/d|before_or_equal:retired_on',
]);

// only validate 'retired_on' if it exists and is not null
if ($request->has('retired_on') && !is_null($request->input('retired_on'))) {
    // pre-check passed, do validation
    $this->validate($request, [
        'retired_on' => 'date_format:Y/m/d|after_or_equal:entered_on',
    ]);
}