/** * @param RouteConfigurationBuilder $builder * * @return RouteConfiguration */ public function build(RouteConfigurationBuilder $builder) { $builder->setRequest($this->request); $builder->setRequestContext($this->requestContext); $builder->setConfigurationPath($this->path); return $builder->build(); }
/** * @param Request $request * @param int $type * @param bool $catch */ public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) { if ($type === HttpKernelInterface::SUB_REQUEST) { return $this->app->handle($request, $type, $catch); } $context = new RequestContext(); $context->fromRequest($request); $this->routeBuilder->setRequest($request); $this->routeBuilder->setRequestContext($context); $routeCollection = $this->router->getRouteCollection(); $configuration = $this->routeBuilder->build(); $routeCollection->addCollection($configuration->getRouteCollection()); $this->router->setUrlGenerator($configuration->getUrlGenerator()); $this->router->setUrlMatcher(new UrlMatcher($routeCollection, $context)); $request->attributes->add($this->router->match($request->getPathInfo())); $route = $routeCollection->get($request->attributes->get('_route')); if (null === $route->getOption('dispatch')) { throw new NotFoundHttpException(); } $request->attributes->set('dispatch', $route->getOption('dispatch')); return $this->app->handle($request, $type, $catch); }