index.php000064400000000006150732300640006360 0ustar00annotationReaderProvider = $annotationReaderProvider; } public function createValidator() { $builder = Validation::createValidatorBuilder(); // we need to use our own translator here. // If we let the default translator to be used in the builder it uses an anonymous class and that is a problem // All integration tests would fail with: [Exception] Serialization of 'class@anonymous' is not allowed $translator = new Translator(); $translator->setLocale('en'); $builder->setTranslator($translator); // annotation reader exists only in dev environment, on production cache is pre-generated $annotationReader = $this->annotationReaderProvider->getAnnotationReader(); if ($annotationReader) { $builder->setDoctrineAnnotationReader($annotationReader) ->enableAnnotationMapping(true); } // metadata cache (for production cache is pre-generated at build time) $isReadOnly = !$annotationReader; $builder->setMappingCache(new PSRMetadataCache(self::METADATA_DIR, $isReadOnly)); return $builder->getValidator(); } } ValidationException.php000064400000003046150732300640011231 0ustar00resourceName = $resourceName; $this->violations = $violations; $linePrefix = ' '; $message = "Validation failed for '$resourceName'.\nDetails:\n"; $message .= $linePrefix . implode("\n$linePrefix", $this->getErrors()); parent::__construct($message); } /** @return string */ public function getResourceName() { return $this->resourceName; } /** @return ConstraintViolationListInterface|ConstraintViolationInterface[] */ public function getViolations() { return $this->violations; } /** @return string[] */ public function getErrors() { $messages = []; foreach ($this->violations as $violation) { $messages[] = $this->formatError($violation); } sort($messages); return $messages; } private function formatError(ConstraintViolationInterface $violation) { return '[' . $violation->getPropertyPath() . '] ' . $violation->getMessage(); } } Translator.php000064400000001054150732300640007406 0ustar00trans($id, ['%count%' => $number] + $parameters, $domain, $locale); } }