javascriptphpjquerylaravellaravel-5

Laravel 5 Validation - Return as json / ajax


I am trying to post the values into validation and return the response as json rather than return view as given in the documentation.

$validator = Validator::make($request->all(), [
    'about' => 'min:1'
]);

if ($validator->fails()) {
    return response()->json(['errors' => ?, 'status' => 400], 200);
} 

The post is made by ajax so I need to receive the response in the ajax as well.

I figured out that in order to prevent refresh of the page in the returning response, I have to give it a status code of 200 outside the array. But I couldn't figure out what to give the 'errors' part. What should I write in there?


Solution

  • You can use $validator->messages() that returns an array which contains all the information about the validator, including errors. The json function takes the array and encodes it as a json string.

    if ($validator->fails()) {    
        return response()->json($validator->messages(), Response::HTTP_BAD_REQUEST);
    }
    

    Note: In case of validation errors, It's better not to return response code 200. You can use other status codes like 400 or Response::HTTP_BAD_REQUEST