/** * @param \TYPO3\Flow\Validation\Validator\ValidatorInterface $validator * @return void */ public function addValidator(\TYPO3\Flow\Validation\Validator\ValidatorInterface $validator) { $this->validator->addValidator($validator); }
/** * This adds custom validators to the passed $conjunctionValidator. * * A custom validator is found if it follows the naming convention "Replace '\Model\' by '\Validator\' and * append 'Validator'". If found, it will be added to the $conjunctionValidator. * * In addition canValidate() will be called on all implementations of the ObjectValidatorInterface to find * all validators that could validate the target. The one with the highest priority will be added as well. * If multiple validators have the same priority, which one will be added is not deterministic. * * @param string $targetClassName * @param ConjunctionValidator $conjunctionValidator * @return NULL|Validator\ObjectValidatorInterface */ protected function addCustomValidators($targetClassName, ConjunctionValidator &$conjunctionValidator) { // Custom validator for the class $addedValidatorClassName = NULL; $possibleValidatorClassName = str_replace('\\Model\\', '\\Validator\\', $targetClassName) . 'Validator'; $customValidator = $this->createValidator($possibleValidatorClassName); if ($customValidator !== NULL) { $conjunctionValidator->addValidator($customValidator); $addedValidatorClassName = get_class($customValidator); } // find polytype validator for class $acceptablePolyTypeValidators = array(); $polyTypeObjectValidatorImplementationClassNames = static::getPolyTypeObjectValidatorImplementationClassNames($this->objectManager); foreach ($polyTypeObjectValidatorImplementationClassNames as $validatorImplementationClassName) { $acceptablePolyTypeValidator = $this->createValidator($validatorImplementationClassName); // skip custom validator already added above if ($addedValidatorClassName === get_class($acceptablePolyTypeValidator)) { continue; } if ($acceptablePolyTypeValidator->canValidate($targetClassName)) { $acceptablePolyTypeValidators[$acceptablePolyTypeValidator->getPriority()] = $acceptablePolyTypeValidator; } } if (count($acceptablePolyTypeValidators) > 0) { ksort($acceptablePolyTypeValidators); $conjunctionValidator->addValidator(array_pop($acceptablePolyTypeValidators)); } }