[FrameworkBundle] Do not load property_access.xml if the component isn't installed

This commit is contained in:
Maxime Steinhausser 2017-10-18 16:30:35 +02:00 committed by Fabien Potencier
parent bb8f1534d2
commit d297e27600
1 changed files with 13 additions and 5 deletions

View File

@ -63,9 +63,6 @@ class FrameworkExtension extends Extension
// will be used and everything will still work as expected.
$loader->load('translation.xml');
// Property access is used by both the Form and the Validator component
$loader->load('property_access.xml');
$configuration = $this->getConfiguration($configs, $container);
$config = $this->processConfiguration($configuration, $configs);
@ -129,7 +126,7 @@ class FrameworkExtension extends Extension
}
$this->registerAnnotationsConfiguration($config['annotations'], $container, $loader);
$this->registerPropertyAccessConfiguration($config['property_access'], $container);
$this->registerPropertyAccessConfiguration($config['property_access'], $container, $loader);
if (isset($config['serializer'])) {
$this->registerSerializerConfiguration($config['serializer'], $container, $loader);
@ -852,8 +849,14 @@ class FrameworkExtension extends Extension
}
}
private function registerPropertyAccessConfiguration(array $config, ContainerBuilder $container)
private function registerPropertyAccessConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
{
if (!class_exists('Symfony\Component\PropertyAccess\PropertyAccessor')) {
return;
}
$loader->load('property_access.xml');
$container
->getDefinition('property_accessor')
->replaceArgument(0, $config['magic_call'])
@ -900,6 +903,11 @@ class FrameworkExtension extends Extension
$loader->load('serializer.xml');
$chainLoader = $container->getDefinition('serializer.mapping.chain_loader');
if (!class_exists('Symfony\Component\PropertyAccess\PropertyAccessor')) {
$container->removeAlias('serializer.property_accessor');
$container->removeDefinition('serializer.normalizer.object');
}
$serializerLoaders = array();
if (isset($config['enable_annotations']) && $config['enable_annotations']) {
$annotationLoader = new Definition(