|
19 | 19 | use Symfony\Component\DependencyInjection\ChildDefinition; |
20 | 20 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; |
21 | 21 | use Symfony\Component\DependencyInjection\ContainerBuilder; |
| 22 | +use Symfony\Component\DependencyInjection\Exception\LogicException; |
22 | 23 | use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; |
23 | 24 | use Symfony\Component\DependencyInjection\Reference; |
24 | 25 | use Symfony\Component\HttpKernel\DependencyInjection\Extension; |
| 26 | +use Symfony\Component\Messenger\MessageBusInterface; |
25 | 27 |
|
26 | 28 | class FOSElasticaExtension extends Extension |
27 | 29 | { |
@@ -80,6 +82,10 @@ public function load(array $configs, ContainerBuilder $container) |
80 | 82 | $config['default_index'] = reset($keys); |
81 | 83 | } |
82 | 84 |
|
| 85 | + if ($this->isConfigEnabled($container, $config['messenger'])) { |
| 86 | + $this->registerMessengerConfiguration($config['messenger'], $container, $loader); |
| 87 | + } |
| 88 | + |
83 | 89 | if (isset($config['serializer'])) { |
84 | 90 | $loader->load('serializer.xml'); |
85 | 91 |
|
@@ -739,4 +745,17 @@ private function getClient(string $clientName): Reference |
739 | 745 |
|
740 | 746 | return $this->clients[$clientName]['reference']; |
741 | 747 | } |
| 748 | + |
| 749 | + private function registerMessengerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader): void |
| 750 | + { |
| 751 | + if (!interface_exists(MessageBusInterface::class)) { |
| 752 | + throw new LogicException('Messenger support cannot be enabled as the Messenger component is not installed. Try running "composer require symfony/messenger".'); |
| 753 | + } |
| 754 | + |
| 755 | + $loader->load('messenger.xml'); |
| 756 | + |
| 757 | + $container->getDefinition('fos_elastica.async_pager_persister') |
| 758 | + ->replaceArgument(2, $config['message_bus'] ? new Reference($config['message_bus']) : new Reference('messenger.default_bus')) |
| 759 | + ; |
| 760 | + } |
742 | 761 | } |
0 commit comments