2017-10-14 11 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フィールドは任意の値に等しい場合、検証下フィールドが存在し、空であってはならないこと。

関連する問題