Search code examples
jsonlaravelvalidationlaravel-5.4

Laravel: validate json object


It's the first time i am using validation in laravel. I am trying to apply validation rule on below json object. The json object name is payload and example is given below.

payload = {
  "name": "jason123",
  "email": "[email protected]",
  "password": "password",
  "gender": "male",
  "age": 21,
  "mobile_number": "0322 8075833",
  "company_name": "xyz",
  "verification_status": 0,
  "image_url": "image.png",
  "address": "main address",
  "lattitude": 0,
  "longitude": 0,
  "message": "my message",
  "profession_id": 1,
  "designation_id": 1,
  "skills": [
    {
      "id": 1,
      "custom" : "new custom1"
    }
   ]
}

And the validation code is like below, for testing purpose i am validating name as a digits. When i executed the below code, the above json object is approved and inserted into my database. Instead, it should give me an exception because i am passing name with alpha numeric value, am i doing something wrong:

public function store(Request $request)
{

    $this->validate($request, [
        'name' => 'digits',
        'age' => 'digits',
        ]);
}

Solution

  • Please try this way

    use Validator;
    
    public function store(Request $request)
    {
        //$data = $request->all();
        $data = json_decode($request->payload, true);
        $rules = [
            'name' => 'digits:8', //Must be a number and length of value is 8
            'age' => 'digits:8'
        ];
    
        $validator = Validator::make($data, $rules);
        if ($validator->passes()) {
            //TODO Handle your data
        } else {
            //TODO Handle your error
            dd($validator->errors()->all());
        }
    }
    

    digits:value

    The field under validation must be numeric and must have an exact length of value.