Skip to content

Commit

Permalink
[FrameworkBundle] moved some validation related services to the XML s…
Browse files Browse the repository at this point in the history
…ervices file
  • Loading branch information
fabpot committed Apr 1, 2011
1 parent 33add37 commit eb21f5b
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 31 deletions.
Expand Up @@ -460,38 +460,15 @@ private function registerValidationConfiguration(array $config, ContainerBuilder

$loader->load('validator.xml');

$xmlMappingFiles = array();
$yamlMappingFiles = array();

// 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));
}
$container
->getDefinition('validator.mapping.loader.xml_files_loader')
->setArgument(0, $this->getValidatorXmlMappingFiles($container))
;

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\\');
Expand All @@ -513,6 +490,37 @@ private function registerValidationConfiguration(array $config, ContainerBuilder
}
}

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.
*
Expand Down
Expand Up @@ -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>

0 comments on commit eb21f5b

Please sign in to comment.