-1
我想比較兩個日期的驗證。我的意思是用戶將輸入開始日期和結束日期。我想驗證開始日期,它不能是昨天。結束日期不會在開始日期之前。請指導我進行laravel驗證。日期比較驗證Laravel 5.2
我想比較兩個日期的驗證。我的意思是用戶將輸入開始日期和結束日期。我想驗證開始日期,它不能是昨天。結束日期不會在開始日期之前。請指導我進行laravel驗證。日期比較驗證Laravel 5.2
我會建議你做的日期自定義的驗證, 放置以下函數,你App\Providers\ValidationServiceProvider
類boot()
方法
//end date must be equal to value or greate than value
Validator::extend('dateequalorearlier', function($attribute, $value, $parameters, $validator) {
$date_compare = array_get($validator->getData(), $parameters[0]);
return Carbon::parse($date_compare) >= Carbon::parse($value);
});
//end date must be greater
Validator::extend('dateearlier', function($attribute, $value, $parameters, $validator) {
$date_compare = array_get($validator->getData(), $parameters[0]);
return Carbon::parse($date_compare) > Carbon::parse($value);
});
//start time must be earlier
Validator::extend('earliertime', function($attribute, $value, $parameters, $validator) {
$time_compare = array_get($validator->getData(), $parameters[0]);
return Carbon::parse($time_compare) > Carbon::parse($value);
});
有我已經定義了三個新的自定義驗證,一個是日期等於或更早的時候,第二個是更早的日期,第三個更早的時候是因爲你需要時間驗證,如果沒有必要的話刪除那些。
您必須在您的語言驗證文件中放置相應的錯誤消息,在resources\lang\validation.php
中找到它。
'dateequalorearlier' => 'The Start date must be an earlier date or Same date from End date',
'dateearlier' => 'The Start date must be an earlier date from End date',
'earliertime' => 'The Start time must be an earlier time from End time',
然後,您可以使用自定義驗證位置在以下任何位置,如下面的代碼片段所示。
$rules = [
'start_date' => 'required|date|dateequalorearlier:end_date',
'end_date' => 'required|date',
];
$messages = [
'start_date.required' => 'Start date is a required field.',
'start_date.date' => 'Start date must be in a valid date format (YYYY-MM-DD).',
'start_date.dateequalorearlier' => 'Start date must be an earlier date or Same date from End date.',
'end_date.required' => 'End date is a required field.',
'end_date.date' => 'End date must be in a valid date format (YYYY-MM-DD).',
];
$validator = Validator::make($request->all(),$rules,$messages);
if($validator->fails()){
$this->throwValidationException($request,$validator);
}
確保你已經包括驗證門面在任何你正在做的驗證..
use Illuminate\Support\Facades\Validator;
我將測試並給予反饋到u很快 –
是的,它一定要是不行,在運行此您的終端添加代碼'$ composer dump-autoload'以重新生成自動加載的文件..也不要忘記在ValidationServiceProvider類中包含'use Validator;',use Carbon \ Carbon;'namespaces –