2016-12-15 3 views
1

본인은 사용자의 국가 신분증 번호를 입력 할 수있는 가입 양식을 가지고 있습니다. 우리나라에서는 주민 번호 카드 번호가 10,13 또는 17 자리가 될 수 있습니다. 이 유형의 유효성 검사를 어떻게 확인할 수 있습니까 ??? 그것은 그것은 전체의 주요 요구 사항을 기입하지 않습니다 (17) (10) 사이의 모든 값을 원인 적절한 방법,되지특정 3 가지 유형의 입력을받는 laravel에 유효성 검사 규칙이 있습니까?

'user_nid' => 'digits_between:10,17|required|numeric|unique:users' 

을하지만 ??? : 내 유효성 검사 코드는 다음입니다

지금 무엇을 할 수 있습니까 ???

+0

숫자 규칙 – msonowal

답변

1

당신은 regex 규칙을 사용하려고 할 수 있습니다

'user_nid' => 'regex:/(?:\d{17}|\d{13}|\d{10})/', 

또는 당신이 할 수 create custom validation rule합니다.

1

regex은 좋은 방법입니다.

'user_nid' => 'regex:/(?:\d{17}|\d{13}|\d{10})/', 

신용

+0

을 제거해 보았습니까? 11, 12 digitsetc를 통과하므로이 유효성 검사가 작동하지 않습니다. –

+0

@RaunakGupta 답변이 업데이트되었습니다. –

1

시도의 사용자 정의 유효성 검사기를 @Alexey 간다 :

Validator::extend('check_user_nid', function($attribute, $value, $parameters, $validator) { 
    return strlent((string)$value) == 10 || strlent((string)$value) == 13 || strlent((string)$value) == 17; 
}); 

$validator = Validator::make(["user_nid"=>$request->get('user_nid')], ["user_nid"=>"required|numeric|check_user_nid|unique:users"]); 

if ($validator->passes()){ 
    //true part 
} 
else { 
    //validation does not pass 
} 
0

쉽게 그것을 할 수 있습니다. 예를 들어 사용자가 어떤 유형의 ID (13 또는 17)를 선택할지 선택 상자가있을 수 있습니다. 그런 다음 입력 값의 최대 및 최소 값에 해당 값을 지정합니다. 그리고 귀하의 컨트롤러에서 입력 된 데이터의 길이가 13 또는 17인지 확인하십시오.

관련 문제