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