3

I am new to API with Laravel. I am trying to validate parameters sent into POST request through the Laravel's validate method.

Following data is the only parameter I am sending through the POST request. I want to validate device_id for uniqueness using Laravel's validate method.

data => {"device_id":"xxxxxx2C-9EA3-4FFB-B26D-E8E483xxxxxx","password":"ANVp285x","user_type":"1"} 

I can validate the only data parameter however there is no proper response or error message it's throwing exception. My main motive is to validate device_id, password and user_type.

Here's my controller's store

public function store(Request $request) {

    try {
        $result = $this->validate($request, [
            'data' => 'required',
//                'data.device_id' => 'required|unique:users|max:60',
//                'data.password' => 'required|min:6|confirmed',
//                'data.user_type' => 'required',
        ]);
        $user = new User;
//        Parameters from request
        $data = json_decode($request->data, TRUE);
        $user->device_id = $data['device_id'];
        $user->password = bcrypt($data['password']);
        $user->u_type = $data['user_type'];

//        Parameters to be generated
        $user->qr_code_image = "test_qr_code.png";
        $user->access_code = MyHelper::generate_access_code();
        $user->save();
        $user = User::find($user->id);
        $result = Fractal::item($user, new UserTransformer)->getArray();
        if (!empty($result['data'])) {
            $result['status'] = TRUE;
            $result['message'] = 'Success';
        } else {
            $result['status'] = FALSE;
            $result['message'] = 'Failed';
        }
    } catch (\Exception $e) {
        $result['status'] = FALSE;
        $result['message'] = 'Failed';
    }
    return $result;
}
1
  • Please show your controller code. Commented Apr 27, 2017 at 5:54

2 Answers 2

10

You can use Illuminate\Support\Facades\Validator to validate requests in your API:

 $validator = Validator::make($request->all(), [
        "device_id" => "required|unique:devices",
        "user_type" => "required",
        "password"  => "required",
    ]);

    if ($validator->fails()) {
        return response(
            $validator->errors(),
            400
        );
    }
Sign up to request clarification or add additional context in comments.

Comments

0

I found the solution I did this with below approch,

$data = $request->data;
        $data = json_decode($data, TRUE);
        $status = 200;
        $validator = Validator::make(
                        array(
                    "goal_title" => $data['goal_name'],
                    "family_id" => $data['family_id'],
                    "goal_frequency" => $data['goal_frequency'],
                        ), array(
                    "goal_title" => "required|regex:/(^[A-Za-z0-9 ]+$)+/|:family_goals",
                    "family_id" => "required",
                    "goal_frequency" => "required:goal_frequencies",
                        )
        );

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.