如果字段为空,如何忽略验证规则?
How to ignore a validation rule if a field is null?
我有 2 个日期的这些规则。但我希望仅在输入 retired_on 日期时才遵循 before_or_equal 规则。我该怎么做呢?有时并不能解决这个问题。如果 retired_on 日期没有输入,则必须能够正确输入 entered_on。使用这 2 条规则,一开始就会出现错误,因为 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',
使用nullable
规则:
'retired_on' => 'nullable|date_format:Y/m/d|after_or_equal:entered_on',
既然你说你不能使用 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',
]);
}
我有 2 个日期的这些规则。但我希望仅在输入 retired_on 日期时才遵循 before_or_equal 规则。我该怎么做呢?有时并不能解决这个问题。如果 retired_on 日期没有输入,则必须能够正确输入 entered_on。使用这 2 条规则,一开始就会出现错误,因为 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',
使用nullable
规则:
'retired_on' => 'nullable|date_format:Y/m/d|after_or_equal:entered_on',
既然你说你不能使用 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',
]);
}