Commit 5cb9ab81 authored by Fabien Potencier's avatar Fabien Potencier

merged branch igorw/validator-2.2 (PR #606)

This PR was merged into the master branch.

Commits
-------

310d316d Make ValidatorServiceProvider work with both 2.1 and 2.2 of symfony/validator

Discussion
----------

Make ValidatorServiceProvider work with both 2.1 and 2.2 of symfony/validator

Closes #584, #585.

---------------------------------------------------------------------------

by davedevelopment at 2013-01-23T14:59:35Z

👍 Let's get this in
parents b42bc687 310d316d
...@@ -15,6 +15,7 @@ use Silex\Application; ...@@ -15,6 +15,7 @@ use Silex\Application;
use Silex\ServiceProviderInterface; use Silex\ServiceProviderInterface;
use Symfony\Component\Validator\Validator; use Symfony\Component\Validator\Validator;
use Symfony\Component\Validator\DefaultTranslator;
use Symfony\Component\Validator\Mapping\ClassMetadataFactory; use Symfony\Component\Validator\Mapping\ClassMetadataFactory;
use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader; use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader;
use Symfony\Component\Validator\ConstraintValidatorFactory; use Symfony\Component\Validator\ConstraintValidatorFactory;
...@@ -29,15 +30,28 @@ class ValidatorServiceProvider implements ServiceProviderInterface ...@@ -29,15 +30,28 @@ class ValidatorServiceProvider implements ServiceProviderInterface
public function register(Application $app) public function register(Application $app)
{ {
$app['validator'] = $app->share(function ($app) { $app['validator'] = $app->share(function ($app) {
if (isset($app['translator'])) {
$r = new \ReflectionClass('Symfony\Component\Validator\Validator'); $r = new \ReflectionClass('Symfony\Component\Validator\Validator');
if (isset($app['translator'])) {
$app['translator']->addResource('xliff', dirname($r->getFilename()).'/Resources/translations/validators.'.$app['locale'].'.xlf', $app['locale'], 'validators'); $app['translator']->addResource('xliff', dirname($r->getFilename()).'/Resources/translations/validators.'.$app['locale'].'.xlf', $app['locale'], 'validators');
} }
$params = $r->getConstructor()->getParameters();
if ('validatorInitializers' === $params[2]->getName()) {
// BC: to be removed before 1.0
// Compatibility with symfony/validator 2.1
// can be removed once silex requires 2.2
return new Validator( return new Validator(
$app['validator.mapping.class_metadata_factory'], $app['validator.mapping.class_metadata_factory'],
$app['validator.validator_factory'] $app['validator.validator_factory']
); );
} else {
return new Validator(
$app['validator.mapping.class_metadata_factory'],
$app['validator.validator_factory'],
isset($app['translator']) ? $app['translator'] : new DefaultTranslator()
);
}
}); });
$app['validator.mapping.class_metadata_factory'] = $app->share(function ($app) { $app['validator.mapping.class_metadata_factory'] = $app->share(function ($app) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment