Noob Coder
Noob Coder

Reputation: 2896

lumen customize validation response

I am trying to create a custom response if validation fails in lumen. But getting the default response. Expecting a response something like

    [
       'code'    => 406,
       'message' => "forbidden",
       'errors'  => {
                      "phone": [
                             "The phone must be 11 digits."
                               ]
                    },
    ]

but getting default response like this

{
  "phone": [
    "The phone must be 11 digits."
  ]
}

Here is what I have tried.

public function validatePhoneNumber(Request $request)
    {
        try {
            $this->validate($request, ['phone' => 'required|digits:11']);
        } catch (ValidationException $e) {
            return response()->json([
                'code'    => 406,
                'message' => "forbidden",
                'errors'  => $e->getMessage(),
            ]);
        }
        return [
            'code'          => 200,
            'message'       => 'Phone number ok',
            'data'          => $request->phone
        ];
    }

Upvotes: 2

Views: 3055

Answers (1)

Antonio
Antonio

Reputation: 131

You can use the function buildFailedValidationResponse in you controller

protected function buildFailedValidationResponse(Request $request, array $errors) {
    return ["code"=> 406 , "message" => "forbidden" , "errors" =>$errors];
}

Upvotes: 3

Related Questions