Slim-Validation icon indicating copy to clipboard operation
Slim-Validation copied to clipboard

Fix the validation of an array of objects

Open DavidePastore opened this issue 7 years ago • 4 comments

  • [X] Update the source code;
  • [x] Create some tests with nested structures or empty array as input
  • [x] Update the documentation
  • [ ] Create a test with an array in POST and another parameter in GET

Close #39.

DavidePastore avatar Sep 06 '18 22:09 DavidePastore

Doesn't work if you mix post array objects with query params:

POST /someurl?test=1
[1,2,3]

in Validation.php: __invoke $params = $request->getParams(); will be:

Array
(
    [test] => 1
    [0] => 1
    [1] => 2
    [2] => 3
)

tamaspanczel avatar Sep 25 '18 14:09 tamaspanczel

Hi @tamaspanczel. Is it related to this PR? If yes, in which way? If not, please create an issue for this problem.

DavidePastore avatar Oct 06 '18 15:10 DavidePastore

Ok, I'll create an issue for this, thx.

tamaspanczel avatar Oct 08 '18 15:10 tamaspanczel

Hey @DavidePastore, this doesn't appear to be working as I expected. I think I led you astray with the use of v::each(). I've taken a closer look at the documentation for each() (https://respect-validation.readthedocs.io/en/1.1/rules/Each/) and it seems like the validator iterates over only key:value pairs of an array, not any objects within an array.

Per my feature request (https://github.com/DavidePastore/Slim-Validation/issues/39), I am trying to validate key:value pairs within an array of objects, so I'm not sure this PR would fix that.

However, it seems like a good enhancement regardless since it allows generic validation of array input such as

[
   "key1": "value1",
   "key2": "value2"
]

I don't have any routes with this format, so I don't think I can verify this PR for you currently.

craig-cogdill avatar Jan 04 '19 21:01 craig-cogdill