@@ -39,6 +39,11 @@ class AppKernel extends Kernel
3939 */
4040 private $ compilerPasses = [];
4141
42+ /**
43+ * @var string|null
44+ */
45+ private $ routingFile = null ;
46+
4247 /**
4348 * @param string $cachePrefix
4449 */
@@ -121,7 +126,7 @@ public function registerContainerConfiguration(LoaderInterface $loader)
121126 $ loader ->load (function (ContainerBuilder $ container ) use ($ loader ) {
122127 $ container ->loadFromExtension ('framework ' , [
123128 'router ' => [
124- 'resource ' => 'kernel:loadRoutes ' ,
129+ 'resource ' => 'kernel:: loadRoutes ' ,
125130 'type ' => 'service ' ,
126131 ],
127132 ]);
@@ -131,6 +136,20 @@ public function registerContainerConfiguration(LoaderInterface $loader)
131136 $ loader ->load ($ path );
132137 }
133138
139+ $ kernelClass = false !== strpos (static ::class, "@anonymous \0" ) ? parent ::class : static ::class;
140+
141+ if (!$ container ->hasDefinition ('kernel ' )) {
142+ $ container ->register ('kernel ' , $ kernelClass )
143+ ->addTag ('controller.service_arguments ' )
144+ ->setAutoconfigured (true )
145+ ->setSynthetic (true )
146+ ->setPublic (true )
147+ ;
148+ }
149+
150+ $ kernelDefinition = $ container ->getDefinition ('kernel ' );
151+ $ kernelDefinition ->addTag ('routing.route_loader ' );
152+
134153 $ container ->addObjectResource ($ this );
135154 });
136155 }
@@ -143,7 +162,12 @@ public function registerContainerConfiguration(LoaderInterface $loader)
143162 public function loadRoutes (LoaderInterface $ loader )
144163 {
145164 $ routes = new RouteCollectionBuilder ($ loader );
146- $ routes ->import (__DIR__ .'/config/routing.yml ' );
165+
166+ if ($ this ->routingFile ) {
167+ $ routes ->import ($ this ->routingFile );
168+ } else {
169+ $ routes ->import (__DIR__ .'/config/routing.yml ' );
170+ }
147171
148172 return $ routes ->build ();
149173 }
@@ -169,4 +193,12 @@ public function addCompilerPasses(array $compilerPasses)
169193 {
170194 $ this ->compilerPasses = $ compilerPasses ;
171195 }
196+
197+ /**
198+ * @param string|null $routingFile
199+ */
200+ public function setRoutingFile ($ routingFile )
201+ {
202+ $ this ->routingFile = $ routingFile ;
203+ }
172204}
0 commit comments