2016-07-25 6 views
-1

유효성 검사에서 두 날짜를 비교하고 싶습니다. 사용자가 시작일과 종료일을 입력 할 것입니다. 시작일을 확인하려고합니다. 어제 일 수 없습니다. 종료일은 시작일 전날이 아닙니다. laravel 검증 과정을 안내해주십시오.날짜 유효성 검사에서 비교 Laravel 5.2

답변

0

나는 당신의 App\Providers\ValidationServiceProvider 클래스 I가 정의한 세 가지 새로운 지정 유효성 검사가 있습니다

//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); 
    }); 

boot() 방법 날짜에 대한 사용자 정의 검증, 장소 다음과 같은 기능을 할 수 제안, 하나는 동일한 날짜입니다 이전에는 두 번째 날짜가 이전 날짜이고 세 번째 날짜는 이전 시간이므로 시간 유효성 검사가 필요하다면 필요하지 않으면 그냥 제거하십시오.

언어 유효성 검사 파일에 적절한 오류 메시지를 넣어야합니다 (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; 
+0

내가 테스트하고 U에 피드백을 제공하지 않을 경우 곧 –

+0

예, 그것은 작동해야이 실행됩니다 터미널에'$ composer dump-autoload' 코드를 추가하여 자동으로로드 된 파일을 재생성 한 후에도 ValidationServiceProvider 클래스의'Use Validator;','Carbon \ Carbon; –