2016-11-15 166 views
0

我試圖找出如何傳回給我的Ajax調用,有驗證錯誤,如果有這樣我就可以阻止該網頁繼續,並顯示這些錯誤給用戶。返回Laravel驗證錯誤Ajax調用

/* 
* Create User After they complete the first part of the form. 
* 
*/ 
public function createUserAndOrder(Request $request) 
{ 
    $validation = $this->validate($request, [ 
     'first_name' => 'required', 
     'last_name' => 'required', 
     'email' => 'required|confirmed|unique:users,email', 
     'email_confirmation' => 'required' 
    ]); 

    $credentials = [ 
     'first_name' => $request->input('first_name'), 
     'last_name' => $request->input('last_name'), 
     'email' => $request->input('email'), 
     'password' => Hash::make(str_random(8)), 
    ]; 

    $user = Sentinel::registerAndActivate($credentials); 

    $user->role()->attach(5); 

    return response()->json([ 
     'success' => true, 
     'errors' => null 
    ]); 
} 

回答

1

您可以通過使用Validate門面的嘗試:

$validator = \Validator::make($request->all(), [ 
    'first_name' => 'required', 
    'last_name' => 'required', 
    'email' => 'required|confirmed|unique:users,email', 
    'email_confirmation' => 'required' 
]); 

// Validate the input and return correct response 
if ($validator->fails()) 
{ 
    return response()->json(array(
     'success' => false, 
     'errors' => $validator->getMessageBag()->toArray() 

    ), 422); 
} 

這會給你這樣的JSON響應:

{ 
    'success': false, 
    'errors': { 
     'first_name': [ 
      'The first name field is required.' 
     ], 
     'last_name': [ 
      'The last name field is required.' 
     ] 
    } 
} 
+0

那麼你肯定是正確的。但是我得到這個結果。 {「success」:false,「errors」:{「first_name」:[「名字是必填字段。」],「last_name」:[「最後一個 名稱字段是必需的。」],「email」:[ 「電子郵件字段是必需的。」],「email_confirmation」:[「電子郵件 確認字段是必需的。」]}} 「NetworkError:422 Unprocessable Entity - http://myapp.app/createUserAndOrder」這是什麼意思是一個錯誤。 – user3732216

+0

結果是OK。你必須在你的ajax調用中處理這個。如果http狀態碼是422,那麼你可以向從服務器返回的用戶顯示錯誤。 –

+0

哦,好的,我可以在ajax調用的成功或錯誤處理程序中執行此操作嗎? – user3732216