Carbon\Exceptions\InvalidFormatException 发现意外数据。发现意外数据。尾随数据,laravel 日期格式验证错误
Carbon\Exceptions\InvalidFormatException Unexpected data found. Unexpected data found. Trailing data, error on laravel date format validation
在我基于 laravel 的应用程序中,在更新用户帐户时,我正在尝试验证生日字段。我的控制器更新方法中有以下内容
$rules = [
'date_of_birth'=>[
'required',
'date',
'date_format:Y-m-d',
function ($attribute, $value, $fail) {
$age = Carbon::createFromFormat('Y-m-d', $value)->diff(Carbon::now())->y;
if($age < 18 || $age > 70) {
$fail('Âge invalide. l\'âge devrait être 18-70');
}
},
]
];
所以日期格式必须是 Y-m-d,年龄范围必须在 18-70 之间。
以下是我的表单字段
<div class="col-md-6 ">
{!! Form::text('date_of_birth', old('date_of_birth', $user->date_of_birth), array('placeholder' => 'Date of birth','class' => 'form-control txt_txt','id'=>'datepicker')) !!}
<span toggle="#dob-field" class="fa fa-fw fa-calendar field-icon toggle-dob"></span>
{!! $errors->first('date_of_birth', '<span class="help-block" role="alert">:message</span>') !!}
</div>
但是每当我尝试提交无效的日期格式,例如 18/12/1995,它总是给我以下错误...
Carbon\Exceptions\InvalidFormatException
Unexpected data found. Unexpected data found. Trailing data
如何解决此问题并验证日期格式并正确显示错误消息。
它会同时检查所有验证规则,这意味着即使 Y-m-d
失败,它仍会检查您的年龄限制。将 bail 添加到您的验证规则,以便在第一次失败时停止验证。
'date_of_birth'=>['bail', 'required','date', 'date_format:Y-m-d', function ($attribute, $value, $fail) {
在我基于 laravel 的应用程序中,在更新用户帐户时,我正在尝试验证生日字段。我的控制器更新方法中有以下内容
$rules = [
'date_of_birth'=>[
'required',
'date',
'date_format:Y-m-d',
function ($attribute, $value, $fail) {
$age = Carbon::createFromFormat('Y-m-d', $value)->diff(Carbon::now())->y;
if($age < 18 || $age > 70) {
$fail('Âge invalide. l\'âge devrait être 18-70');
}
},
]
];
所以日期格式必须是 Y-m-d,年龄范围必须在 18-70 之间。
以下是我的表单字段
<div class="col-md-6 ">
{!! Form::text('date_of_birth', old('date_of_birth', $user->date_of_birth), array('placeholder' => 'Date of birth','class' => 'form-control txt_txt','id'=>'datepicker')) !!}
<span toggle="#dob-field" class="fa fa-fw fa-calendar field-icon toggle-dob"></span>
{!! $errors->first('date_of_birth', '<span class="help-block" role="alert">:message</span>') !!}
</div>
但是每当我尝试提交无效的日期格式,例如 18/12/1995,它总是给我以下错误...
Carbon\Exceptions\InvalidFormatException
Unexpected data found. Unexpected data found. Trailing data
如何解决此问题并验证日期格式并正确显示错误消息。
它会同时检查所有验证规则,这意味着即使 Y-m-d
失败,它仍会检查您的年龄限制。将 bail 添加到您的验证规则,以便在第一次失败时停止验证。
'date_of_birth'=>['bail', 'required','date', 'date_format:Y-m-d', function ($attribute, $value, $fail) {