嗨,我正在尝试验证我的出生日期字段验证
我需要年龄范围必须是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',
]);