2016-11-15 154 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