[FrameworkBundle] moved some validation related services to the XML services file

This commit is contained in:
Fabien Potencier 2011-04-01 08:26:19 +02:00
parent 33add37f7c
commit eb21f5b76e
2 changed files with 47 additions and 31 deletions

View File

@ -460,38 +460,15 @@ class FrameworkExtension extends Extension
$loader->load('validator.xml');
$xmlMappingFiles = array();
$yamlMappingFiles = array();
$container
->getDefinition('validator.mapping.loader.xml_files_loader')
->setArgument(0, $this->getValidatorXmlMappingFiles($container))
;
// Include default entries from the framework
$xmlMappingFiles[] = __DIR__.'/../../../Component/Form/Resources/config/validation.xml';
foreach ($container->getParameter('kernel.bundles') as $bundle) {
$reflection = new \ReflectionClass($bundle);
if (file_exists($file = dirname($reflection->getFilename()).'/Resources/config/validation.xml')) {
$xmlMappingFiles[] = realpath($file);
}
if (file_exists($file = dirname($reflection->getFilename()).'/Resources/config/validation.yml')) {
$yamlMappingFiles[] = realpath($file);
}
}
$xmlFilesLoader = new Definition('%validator.mapping.loader.xml_files_loader.class%', array($xmlMappingFiles));
$xmlFilesLoader->setPublic(false);
$yamlFilesLoader = new Definition('%validator.mapping.loader.yaml_files_loader.class%', array($yamlMappingFiles));
$yamlFilesLoader->setPublic(false);
$container->setDefinition('validator.mapping.loader.xml_files_loader', $xmlFilesLoader);
$container->setDefinition('validator.mapping.loader.yaml_files_loader', $yamlFilesLoader);
foreach ($xmlMappingFiles as $file) {
$container->addResource(new FileResource($file));
}
foreach ($yamlMappingFiles as $file) {
$container->addResource(new FileResource($file));
}
$container
->getDefinition('validator.mapping.loader.yaml_files_loader')
->setArgument(0, $this->getValidatorYamlMappingFiles($container))
;
if (isset($config['annotations'])) {
$namespaces = array('assert' => 'Symfony\\Component\\Validator\\Constraints\\');
@ -513,6 +490,37 @@ class FrameworkExtension extends Extension
}
}
private function getValidatorXmlMappingFiles(ContainerBuilder $container)
{
$files = array(__DIR__.'/../../../Component/Form/Resources/config/validation.xml');
$container->addResource(new FileResource($files[0]));
foreach ($container->getParameter('kernel.bundles') as $bundle) {
$reflection = new \ReflectionClass($bundle);
if (file_exists($file = dirname($reflection->getFilename()).'/Resources/config/validation.xml')) {
$files[] = realpath($file);
$container->addResource(new FileResource($file));
}
}
return $files;
}
private function getValidatorYamlMappingFiles(ContainerBuilder $container)
{
$files = array();
foreach ($container->getParameter('kernel.bundles') as $bundle) {
$reflection = new \ReflectionClass($bundle);
if (file_exists($file = dirname($reflection->getFilename()).'/Resources/config/validation.yml')) {
$yamlMappingFiles[] = realpath($file);
$container->addResource(new FileResource($file));
}
}
return $files;
}
/**
* Returns the base path for the XSD files.
*

View File

@ -45,5 +45,13 @@
<service id="validator.mapping.loader.annotation_loader" class="%validator.mapping.loader.annotation_loader.class%" public="false">
<argument /> <!-- namespaces -->
</service>
<service id="validator.mapping.loader.xml_files_loader" class="%validator.mapping.loader.xml_files_loader.class%" public="false">
<argument /> <!-- mapping files -->
</service>
<service id="validator.mapping.loader.yaml_files_loader" class="%validator.mapping.loader.yaml_files_loader.class%" public="false">
<argument /> <!-- mapping files -->
</service>
</services>
</container>