2017-10-14 1 views
0
public function register(Request $request){ 


    $validator = \Validator::make($request->all(), [ 
     'first_name' => 'required|min:3', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|min:6|confirmed', 
     'password_confirmation' => 'required', 
     'address' => 'required', 
     'phone_number' => 'required', 
    ]); 

    if($request->user_type == 1){ 
     $validator = \Validator::make($request->all(), [ 
       'dob' => 'required' 
      ]); 
    } 

    if($request->user_type == 2){ 
     $validator = \Validator::make($request->all(), [ 
       'doctor_practice' => 'required' 
      ]); 
    } 

    // then, if it fails, return the error messages in JSON format 
    if ($validator->fails()) {  
     return response()->json($validator->messages(), 401); 
    } 

사용자 유형에 따라 유효성 검사기를 어떻게 설정할 수 있습니까? 시도가 잘 작동하지 않습니다.사용자 유형에 따라 laravel 검사기를 설정하십시오.

답변

4

사용자 유형에 따라 규칙 배열을 추가 및 검증의 내장 메커니즘을 사용하는 것이 더 정확하게 그것은 더 지난

$rules = [ 
    'first_name' => 'required|min:3', 
    'email' => 'required|email|max:255|unique:users', 
    'password' => 'required|min:6|confirmed', 
    'password_confirmation' => 'required', 
    'address' => 'required', 
    'phone_number' => 'required', 
]; 

if($request->user_type == 1){ 
    $rules['dob'] = 'required'; 
}else if($request->user_type == 2){ 
    $rules['doctor_practice'] = 'required'; 
} 

$validator = \Validator::make($request->all(), $rules); 
if ($validator->fails()) {  
    return response()->json($validator->messages(), 401); 
} 
+0

예. 이 방법은 노력하고 있었다. – Amy

+0

@Amy : 당신이 이것을 시도했다는 것을 의미합니까? 이게 효과가 있었 니? – C2486

+0

예,하지만 철자 실수는했지만 그럼에도 불구하고 그러한 지원에 감사드립니다. – Amy

1

에서 규칙을 넣어.

$rules = [ 
    'first_name' => 'required|min:3', 
    'email' => 'required|email|max:255|unique:users', 
    'password' => 'required|min:6|confirmed', 
    'password_confirmation' => 'required', 
    'address' => 'required', 
    'phone_number' => 'required', 
    'dob' => 'required_if:user_type,1', 
    'doctor_practice' => 'required_if:user_type,2', 
]; 

$validator = \Validator::make($request->all(), $rules); 
if ($validator->fails()) {  
    return response()->json($validator->messages(), 401); 
} 

Laravel documentation

required_if에서 설명 ... anotherfield 가치

anotherfield 필드 값과 같으면 검증 아래 필드가 존재하고 비어 있지 있어야 .

관련 문제