requestStack = $request_stack; $this->routeMatches = new \SplObjectStorage(); } /** * {@inheritdoc} */ public function getRouteName() { return $this->getCurrentRouteMatch()->getRouteName(); } /** * {@inheritdoc} */ public function getRouteObject() { return $this->getCurrentRouteMatch()->getRouteObject(); } /** * {@inheritdoc} */ public function getParameter($parameter_name) { return $this->getCurrentRouteMatch()->getParameter($parameter_name); } /** * {@inheritdoc} */ public function getParameters() { return $this->getCurrentRouteMatch()->getParameters(); } /** * {@inheritdoc} */ public function getRawParameter($parameter_name) { return $this->getCurrentRouteMatch()->getRawParameter($parameter_name); } /** * {@inheritdoc} */ public function getRawParameters() { return $this->getCurrentRouteMatch()->getRawParameters(); } /** * Returns the route match for the current request. * * @return \Drupal\Core\Routing\RouteMatchInterface * The current route match object. */ public function getCurrentRouteMatch() { return $this->getRouteMatch($this->requestStack->getCurrentRequest()); } /** * Returns the route match for a passed in request. * * @param \Symfony\Component\HttpFoundation\Request $request * A request object. * * @return \Drupal\Core\Routing\RouteMatchInterface * A route match object created from the request. */ protected function getRouteMatch(Request $request) { if (isset($this->routeMatches[$request])) { $route_match = $this->routeMatches[$request]; } else { $route_match = RouteMatch::createFromRequest($request); // Since getRouteMatch() might be invoked both before and after routing // is completed, only statically cache the route match after there's a // matched route. if ($route_match->getRouteObject()) { $this->routeMatches[$request] = $route_match; } } return $route_match; } /** * {@inheritdoc} */ public function resetRouteMatch() { $this->routeMatches = new \SplObjectStorage(); } /** * {@inheritdoc} */ public function getMasterRouteMatch() { return $this->getRouteMatch($this->requestStack->getMainRequest()); } /** * {@inheritdoc} */ public function getParentRouteMatch() { return $this->getRouteMatch($this->requestStack->getParentRequest()); } /** * {@inheritdoc} */ public function getRouteMatchFromRequest(Request $request) { return $this->getRouteMatch($request); } }