mr mithun
mr mithun

Reputation: 105

Validation error in api response in laravel 5.6

I want to store data through api. It's working but problem is when I add validation it does not give me corresponding message . How can I fix it? Thanks in advance

Here is my route

Route::post('api/add_user', 'TestApiController@store'); 

Here is my controller

public function store(Request $request)
{

    $validation = Validator::make(Request::all(), [
        'name' => 'required',
        'phone' => 'required',
        'email' => 'required'
    ]);


    if ($validation->errors()) {
        return $errors->toJson();
    } else {
        $testApi = new testApi();


        $testApi->name = $request->name;
        $testApi->phone = $request->phone;
        $testApi->email = $request->email;

        $testApi->save();


        return "ok";
    }

}

Upvotes: 0

Views: 957

Answers (2)

Thamer
Thamer

Reputation: 1954

to handle that your method should be like this :

 public function store(Request $request)
    {


$validator = Validator::make($request->all(), [
            'name' => 'required',
            'phone' => 'required',
            'email2' => 'required|email'
        ]);

 if($validator->fails()){
            // here we return all the errors message
            return response()->json(['errors' => $validator->errors()], 422);
        }


        $testApi = new testApi();

        $testApi->name = $request->name;
        $testApi->phone = $request->phone;
        $testApi->email = $request->email;

        $testApi->save();

       // 201 http code means that the server has proceced your request correctly
        return response()->json([], 201);
    }

Upvotes: 2

Tharaka Dilshan
Tharaka Dilshan

Reputation: 4499

You don't have to manually do this. simply

public function store(Request $request)
{
    $request->validate([
        'name' => 'required',
        'phone' => 'required',
        'email' => 'required'
    ]);

    $testApi = new testApi();

    $testApi->name = $request->name;
    $testApi->phone = $request->phone;
    $testApi->email = $request->email;

    $testApi->save();

    return "ok";
}

this will automatically handles validation and returns error message when invalid.

Update

if you wanna stick with your approach. this is where you need to change.

if ($validation->fails()) {
    return $validation->errors();
} 

Upvotes: 0

Related Questions