/** * @param FieldConfigModel $entity * @return array */ protected function validateEntityFields(FieldConfigModel $entity) { $errors = []; $fieldProperties = $this->fieldTypeProvider->getFieldProperties($entity->getType()); foreach ($fieldProperties as $scope => $properties) { $scopeData = $entity->toArray($scope); foreach ($properties as $code => $config) { if (!isset($scopeData[$code])) { continue; } if ($scope === 'enum') { foreach ($scopeData[$code] as $key => $enumFields) { $result = $this->strategyHelper->validateEntity(EnumValue::createFromArray($enumFields)); if ($result) { $errors[] = sprintf('%s.%s.%s: %s', $scope, $code, $key, implode(' ', $result)); } } } elseif (isset($config['constraints'])) { $result = $this->strategyHelper->validateEntity($scopeData[$code], $this->constraintFactory->parse($config['constraints'])); if ($result) { $errors[] = sprintf('%s.%s: %s', $scope, $code, implode(' ', $result)); } } } } return $errors; }
/** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $resolver->setNormalizer('constraints', function (Options $options, $constraints) { $constraints = is_object($constraints) ? array($constraints) : (array) $constraints; $constraintObjects = array(); foreach ($constraints as $constraint) { if (is_array($constraint)) { foreach ($constraint as $name => $options) { $constraintObjects[] = $this->constraintFactory->create($name, $options); } } elseif (is_object($constraint)) { $constraintObjects[] = $constraint; } } return $constraintObjects; }); }
/** * {@inheritdoc} */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $constraintsNormalizer = function (Options $options, $constraints) { $constraints = is_object($constraints) ? array($constraints) : (array) $constraints; $constraintObjects = array(); foreach ($constraints as $constraint) { if (is_array($constraint)) { foreach ($constraint as $name => $options) { $constraintObjects[] = $this->constraintFactory->create($name, $options); } } elseif (is_object($constraint)) { $constraintObjects[] = $constraint; } } return $constraintObjects; }; $resolver->setNormalizers(array('constraints' => $constraintsNormalizer)); }
/** * @param array $constraints * @return array|Constraint[] */ protected function getFieldConstraints(array $constraints) { $constraintObjects = []; foreach ($constraints as $constraint) { foreach ($constraint as $name => $options) { $constraintObjects[] = $this->constraintFactory->create($name, $options); } } return $constraintObjects; }
/** * {@inheritdoc} */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setNormalizers(['constraints' => function (Options $options, $constraints) { return $this->constraintFactory->parse(is_object($constraints) ? [$constraints] : (array) $constraints); }]); }
/** * @param array $constraints * * @dataProvider invalidConstraintsProvider * @expectedException \InvalidArgumentException */ public function testParseWithInvalidArgument($constraints) { $factory = new ConstraintFactory(); $factory->parse($constraints); }
/** * @param string $expectedClass * @param string $name * @param mixed $options * @dataProvider createDataProvider */ public function testCreate($expectedClass, $name, $options) { $factory = new ConstraintFactory(); $this->assertInstanceOf($expectedClass, $factory->create($name, $options)); }