File tree 2 files changed +14
-1
lines changed
Resources/config/container
2 files changed +14
-1
lines changed Original file line number Diff line number Diff line change 17
17
use Symfony \Component \Cache \Adapter \ApcuAdapter ;
18
18
use Symfony \Component \Cache \Adapter \PhpFilesAdapter ;
19
19
use Symfony \Component \Cache \Psr16Cache ;
20
+ use Symfony \Component \DependencyInjection \Argument \ServiceLocatorArgument ;
20
21
use Symfony \Component \DependencyInjection \Compiler \CompilerPassInterface ;
21
22
use Symfony \Component \DependencyInjection \ContainerBuilder ;
22
23
use Symfony \Component \DependencyInjection \Definition ;
@@ -297,12 +298,21 @@ public function process(ContainerBuilder $container): void
297
298
private function registerController (string $ controllerClassName , ContainerBuilder $ container ): void
298
299
{
299
300
$ aggregateQueryProvider = $ container ->findDefinition (AggregateControllerQueryProviderFactory::class);
301
+
300
302
$ controllersList = $ aggregateQueryProvider ->getArgument (0 );
301
303
if (!is_array ($ controllersList )){
302
304
throw new GraphQLException (sprintf ('Expecting array in %s, arg #1 ' , AggregateControllerQueryProviderFactory::class));
303
305
}
306
+
304
307
$ controllersList [] = $ controllerClassName ;
305
308
$ aggregateQueryProvider ->setArgument (0 , $ controllersList );
309
+
310
+ $ serviceLocatorMap = [];
311
+ foreach ($ controllersList as $ controller ) {
312
+ $ serviceLocatorMap [$ controller ] = new Reference ($ controller );
313
+ }
314
+
315
+ $ aggregateQueryProvider ->setArgument (1 , new ServiceLocatorArgument ($ serviceLocatorMap ));
306
316
}
307
317
308
318
/**
Original file line number Diff line number Diff line change 26
26
</service >
27
27
28
28
<service id =" TheCodingMachine\GraphQLite\AggregateControllerQueryProviderFactory" >
29
+ <!-- Controller classes list will be generated by compiler pass -->
29
30
<argument type =" collection" >
30
31
</argument >
31
- <argument type =" service" id =" service_container" >
32
+ <!-- Service locator will be generated by compiler pass -->
33
+ <argument type =" service_locator" >
32
34
</argument >
35
+
33
36
<tag name =" graphql.queryprovider_factory" />
34
37
</service >
35
38
You can’t perform that action at this time.
0 commit comments