laravel中的生日日期范围验证问题



嗨,我正在尝试验证我的出生日期字段验证

我需要年龄范围必须是18-45

我尝试了以下规则,但它不能正常工作。

'date_of_birth_tcp2'=>'required|date|before:18 years|after:45 years'

您可以使用自定义验证或注释中提到的方法来实现这一点。

'date_of_birth_tcp2'=>['required','date',  function ($attribute, $value, $fail) {

$age=Carbon::parse($value)->diff(Carbon::now())->y;
//$age=Carbon::createFromFormat('d/m/Y',$value)->diff(Carbon::now())->y;
if($age<18||$age>45){
$fail('The '.$attribute.' is invalid.');
}

},]

app/Providers/AppServiceProvider:中创建自定义验证规则

public function boot() {
Validator::extend('valid_date_range', function ($attribute, $value, $parameter, $validator) {
$dob = Carbon::parse($value)->diff(Carbon::now())->y;
if($dob < 18 || $dob > 45) {
return $fail('The given '.$attribute.' is invalid.');
}
});
}

使用此规则:

$this->validate([
'date_of_birth_tcp2' => 'valid_date_range:date_of_birth,3',
]);

最新更新