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