/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { if (empty($options['data_class'])) { return; } $className = $options['data_class']; if (!$this->entityConfigProvider->hasConfig($className)) { return; } $config = $this->entityConfigProvider->getConfig($className); if (!$config->has('unique_key')) { return; } $uniqueKeys = $config->get('unique_key', false, ['keys' => []]); /* @var \Symfony\Component\Validator\Mapping\ClassMetadata $validatorMetadata */ $validatorMetadata = $this->validator->getMetadataFor($className); foreach ($uniqueKeys['keys'] as $uniqueKey) { $fields = $uniqueKey['key']; $labels = array_map(function ($fieldName) use($className) { $label = $this->entityConfigProvider->getConfig($className, $fieldName)->get('label'); return $this->translator->trans($label); }, $fields); $constraint = new UniqueEntity(['fields' => $fields, 'errorPath' => '', 'message' => $this->translator->transChoice('oro.entity.validation.unique_field', sizeof($fields), ['%field%' => implode(', ', $labels)])]); $validatorMetadata->addConstraint($constraint); } }
/** * Adds validators to check the Descriptors. * * @param Validator $validator * * @return Validator */ public function attachValidators(Validator $validator) { /** @var ClassMetadata $fileMetadata */ $fileMetadata = $validator->getMetadataFor('phpDocumentor\\Descriptor\\FileDescriptor'); /** @var ClassMetadata $constantMetadata */ $constantMetadata = $validator->getMetadataFor('phpDocumentor\\Descriptor\\ConstantDescriptor'); /** @var ClassMetadata $functionMetadata */ $functionMetadata = $validator->getMetadataFor('phpDocumentor\\Descriptor\\FunctionDescriptor'); /** @var ClassMetadata $classMetadata */ $classMetadata = $validator->getMetadataFor('phpDocumentor\\Descriptor\\ClassDescriptor'); /** @var ClassMetadata $interfaceMetadata */ $interfaceMetadata = $validator->getMetadataFor('phpDocumentor\\Descriptor\\InterfaceDescriptor'); /** @var ClassMetadata $traitMetadata */ $traitMetadata = $validator->getMetadataFor('phpDocumentor\\Descriptor\\TraitDescriptor'); /** @var ClassMetadata $propertyMetadata */ $propertyMetadata = $validator->getMetadataFor('phpDocumentor\\Descriptor\\PropertyDescriptor'); /** @var ClassMetadata $methodMetadata */ $methodMetadata = $validator->getMetadataFor('phpDocumentor\\Descriptor\\MethodDescriptor'); $fileMetadata->addPropertyConstraint('summary', new Assert\NotBlank(array('message' => 'PPC:ERR-50000'))); $classMetadata->addPropertyConstraint('summary', new Assert\NotBlank(array('message' => 'PPC:ERR-50005'))); $propertyMetadata->addConstraint(new phpDocAssert\Property\HasSummary()); $methodMetadata->addPropertyConstraint('summary', new Assert\NotBlank(array('message' => 'PPC:ERR-50008'))); $interfaceMetadata->addPropertyConstraint('summary', new Assert\NotBlank(array('message' => 'PPC:ERR-50009'))); $traitMetadata->addPropertyConstraint('summary', new Assert\NotBlank(array('message' => 'PPC:ERR-50010'))); $functionMetadata->addPropertyConstraint('summary', new Assert\NotBlank(array('message' => 'PPC:ERR-50011'))); $functionMetadata->addConstraint(new phpDocAssert\Functions\IsReturnTypeNotAnIdeDefault()); $methodMetadata->addConstraint(new phpDocAssert\Functions\IsReturnTypeNotAnIdeDefault()); $functionMetadata->addConstraint(new phpDocAssert\Functions\IsParamTypeNotAnIdeDefault()); $methodMetadata->addConstraint(new phpDocAssert\Functions\IsParamTypeNotAnIdeDefault()); $functionMetadata->addConstraint(new phpDocAssert\Functions\AreAllArgumentsValid()); $methodMetadata->addConstraint(new phpDocAssert\Functions\AreAllArgumentsValid()); $classMetadata->addConstraint(new phpDocAssert\Classes\HasSinglePackage()); $interfaceMetadata->addConstraint(new phpDocAssert\Classes\HasSinglePackage()); $traitMetadata->addConstraint(new phpDocAssert\Classes\HasSinglePackage()); $fileMetadata->addConstraint(new phpDocAssert\Classes\HasSinglePackage()); $classMetadata->addConstraint(new phpDocAssert\Classes\HasSingleSubpackage()); $interfaceMetadata->addConstraint(new phpDocAssert\Classes\HasSingleSubpackage()); $traitMetadata->addConstraint(new phpDocAssert\Classes\HasSingleSubpackage()); $fileMetadata->addConstraint(new phpDocAssert\Classes\HasSingleSubpackage()); $classMetadata->addConstraint(new phpDocAssert\Classes\HasPackageWithSubpackage()); $interfaceMetadata->addConstraint(new phpDocAssert\Classes\HasPackageWithSubpackage()); $traitMetadata->addConstraint(new phpDocAssert\Classes\HasPackageWithSubpackage()); $fileMetadata->addConstraint(new phpDocAssert\Classes\HasPackageWithSubpackage()); return $validator; }