diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 2ad8143..e3cb3e6 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -26,6 +26,7 @@ class Configuration ->children() ->scalarNode('default_client')->end() ->scalarNode('default_index')->end() + ->scalarNode('default_manager')->defaultValue('orm')->end() ->end() ; diff --git a/DependencyInjection/FOQElasticaExtension.php b/DependencyInjection/FOQElasticaExtension.php index 4000fc4..c039302 100644 --- a/DependencyInjection/FOQElasticaExtension.php +++ b/DependencyInjection/FOQElasticaExtension.php @@ -52,6 +52,8 @@ class FOQElasticaExtension extends Extension $container->setAlias('foq_elastica.client', sprintf('foq_elastica.client.%s', $config['default_client'])); $container->setAlias('foq_elastica.index', sprintf('foq_elastica.index.%s', $config['default_index'])); + + $this->createDefaultManagerAlias($config['default_manager'], $container); } /** @@ -390,4 +392,22 @@ class FOQElasticaExtension extends Extension $loader->load($driver.'.xml'); $this->loadedDrivers[] = $driver; } + + protected function createDefaultManagerAlias($defaultManager, ContainerBuilder $container) + { + if (0 == count($this->loadedDrivers)) { + return; + } + + if (count($this->loadedDrivers) > 1 + && in_array($defaultManager, $this->loadedDrivers) + ) { + $defaultManagerService = $defaultManager; + } else { + $defaultManagerService = $this->loadedDrivers[0]; + } + + $container->setAlias('foq_elastica.manager', sprintf('foq_elastica.manager.%s', $defaultManagerService)); + } + }