diff --git a/pkg/async-event-dispatcher/DependencyInjection/AsyncTransformersPass.php b/pkg/async-event-dispatcher/DependencyInjection/AsyncTransformersPass.php index 0adcfcb45..afe10217d 100644 --- a/pkg/async-event-dispatcher/DependencyInjection/AsyncTransformersPass.php +++ b/pkg/async-event-dispatcher/DependencyInjection/AsyncTransformersPass.php @@ -18,6 +18,7 @@ public function process(ContainerBuilder $container) $transformerIdsMap = []; $eventNamesMap = []; + $defaultTransformer = null; foreach ($container->findTaggedServiceIds('enqueue.event_transformer') as $serviceId => $tagAttributes) { foreach ($tagAttributes as $tagAttribute) { if (false == isset($tagAttribute['eventName'])) { @@ -28,11 +29,24 @@ public function process(ContainerBuilder $container) $transformerName = isset($tagAttribute['transformerName']) ? $tagAttribute['transformerName'] : $serviceId; - $eventNamesMap[$eventName] = $transformerName; - $transformerIdsMap[$transformerName] = $serviceId; + if (isset($tagAttribute['default']) && $tagAttribute['default']) { + $defaultTransformer = [ + 'id' => $serviceId, + 'transformerName' => $transformerName, + 'eventName' => $eventName, + ]; + } else { + $eventNamesMap[$eventName] = $transformerName; + $transformerIdsMap[$transformerName] = $serviceId; + } } } + if ($defaultTransformer) { + $eventNamesMap[$defaultTransformer['eventName']] = $defaultTransformer['transformerName']; + $transformerIdsMap[$defaultTransformer['transformerName']] = $defaultTransformer['id']; + } + $container->getDefinition('enqueue.events.registry') ->replaceArgument(0, $eventNamesMap) ->replaceArgument(1, $transformerIdsMap) diff --git a/pkg/async-event-dispatcher/Resources/config/services.yml b/pkg/async-event-dispatcher/Resources/config/services.yml index 2cef52714..2b3fbc0b0 100644 --- a/pkg/async-event-dispatcher/Resources/config/services.yml +++ b/pkg/async-event-dispatcher/Resources/config/services.yml @@ -25,10 +25,10 @@ services: - '@event_dispatcher' - '@enqueue.events.async_listener' - enqueue.events.php_serializer_event_transofrmer: + enqueue.events.php_serializer_event_transformer: class: 'Enqueue\AsyncEventDispatcher\PhpSerializerEventTransformer' public: public arguments: - '@enqueue.events.context' tags: - - {name: 'enqueue.event_transformer', eventName: '/.*/', transformerName: 'php_serializer' } + - {name: 'enqueue.event_transformer', eventName: '/.*/', transformerName: 'php_serializer', default: true }