/** * Validate a PATCH request * * @param InputFilterInterface $inputFilter * @param array|object $data * @param bool $isCollection * @return bool|ApiProblemResponse */ protected function validatePatch(InputFilterInterface $inputFilter, $data, $isCollection) { if ($isCollection) { $validationGroup = $data; foreach ($validationGroup as &$subData) { $subData = array_keys($subData); } } else { $validationGroup = array_keys($data); } try { $inputFilter->setValidationGroup($validationGroup); return $inputFilter->isValid(); } catch (InputFilterInvalidArgumentException $ex) { $pattern = '/expects a list of valid input names; "(?P<field>[^"]+)" was not found/'; $matched = preg_match($pattern, $ex->getMessage(), $matches); if (! $matched) { return new ApiProblemResponse( new ApiProblem(400, $ex) ); } return new ApiProblemResponse( new ApiProblem(400, 'Unrecognized field "' . $matches['field'] . '"') ); } }