public function handleEntityUpdate(AbstractEntity $entity, array $allowedProperties, array $data) { $data = ArrayUtils::filterKeys($data, $allowedProperties); $repository = $this->knit->getRepository($entity->__getClass()); try { $entity->updateWithData($data); $repository->save($entity); } catch (DataValidationFailedException $e) { $errors = array(); foreach ($e->getErrors() as $error) { $errors[$error->getProperty()] = $error->getFailedValidators(); } return array($this->httpCodeKey => 400, 'errors' => $errors); } return array(); }
/** * @dataProvider provideFilterKeysArrays */ public function testFilterKeys(array $array, array $allowed) { $filtered = ArrayUtils::filterKeys($array, $allowed); foreach ($array as $key => $val) { if (in_array($key, $allowed)) { $this->assertArrayHasKey($key, $filtered); } else { $this->assertArrayNotHasKey($key, $filtered); } } }