Commit 3b11321b authored by Fabien Potencier's avatar Fabien Potencier

merged branch nlegoff/form-validation (PR #321)

Commits
-------

ea7c057c regiser mapping file for the Form in the Validator

Discussion
----------

Add mapping file for the form in the validator service

Hi,

I've added mapping file for the form in the validator in order to get the proper validation process when a form instance is build using a Form Definition class + a Data Class.

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

by bamarni at 2012-05-25T11:30:24Z

👍 indeed form validation wasn't setup properly
parents 88f14bbd ea7c057c
......@@ -17,6 +17,8 @@ use Silex\ServiceProviderInterface;
use Symfony\Component\Validator\Validator;
use Symfony\Component\Validator\Mapping\ClassMetadataFactory;
use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader;
use Symfony\Component\Validator\Mapping\Loader\LoaderChain;
use Symfony\Component\Validator\Mapping\Loader\XmlFileLoader;
use Symfony\Component\Validator\ConstraintValidatorFactory;
/**
......@@ -36,6 +38,15 @@ class ValidatorServiceProvider implements ServiceProviderInterface
});
$app['validator.mapping.class_metadata_factory'] = $app->share(function () use ($app) {
if (isset($app['form.factory'])) {
$reflClass = new \ReflectionClass('Symfony\\Component\\Form\\FormInterface');
return new ClassMetadataFactory(new LoaderChain(array(
new StaticMethodLoader(),
new XmlFileLoader(dirname($reflClass->getFileName()) . '/Resources/config/validation.xml')
)));
}
return new ClassMetadataFactory(new StaticMethodLoader());
});
......
......@@ -44,4 +44,36 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase
{
$this->assertInstanceOf('Symfony\Component\Validator\Validator', $app['validator']);
}
/**
* @depends testRegister
*/
public function testValidatorServiceWithFormServiceDisabled($app)
{
if (!is_dir(__DIR__ . '/../../../../vendor/symfony/form')) {
$this->markTestSkipped('Form submodule was not installed.');
}
$metadatas = $app['validator']->getMetadataFactory()->getClassMetadata('Symfony\Component\Form\Form');
$this->assertEquals(0, count($metadatas->constraints));
}
/**
* @depends testRegister
*/
public function testValidatorServiceWithFormServiceEnabled($app)
{
if (!is_dir(__DIR__ . '/../../../../vendor/symfony/form')) {
$this->markTestSkipped('Form submodule was not installed.');
}
$app->register(new ValidatorServiceProvider());
$app['form.factory'] = true;
$metadatas = $app['validator']->getMetadataFactory()->getClassMetadata('Symfony\Component\Form\Form');
$this->assertEquals(1, count($metadatas->constraints));
}
}
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