You are here

class CurrentRouteMatch in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Routing/CurrentRouteMatch.php \Drupal\Core\Routing\CurrentRouteMatch
  2. 9 core/lib/Drupal/Core/Routing/CurrentRouteMatch.php \Drupal\Core\Routing\CurrentRouteMatch

Default object for current_route_match service.

Hierarchy

  • class \Drupal\Core\Routing\CurrentRouteMatch implements \Drupal\Core\Routing\ResettableStackedRouteMatchInterface

Expanded class hierarchy of CurrentRouteMatch

3 files declare their use of CurrentRouteMatch
ContentPreprocessTest.php in core/modules/content_moderation/tests/src/Unit/ContentPreprocessTest.php
CurrentRouteMatchTest.php in core/tests/Drupal/Tests/Core/Routing/CurrentRouteMatchTest.php
MenuActiveTrailTest.php in core/tests/Drupal/Tests/Core/Menu/MenuActiveTrailTest.php
1 string reference to 'CurrentRouteMatch'
core.services.yml in core/core.services.yml
core/core.services.yml
1 service uses CurrentRouteMatch
current_route_match in core/core.services.yml
Drupal\Core\Routing\CurrentRouteMatch

File

core/lib/Drupal/Core/Routing/CurrentRouteMatch.php, line 11

Namespace

Drupal\Core\Routing
View source
class CurrentRouteMatch implements ResettableStackedRouteMatchInterface {

  /**
   * The related request stack.
   *
   * @var \Symfony\Component\HttpFoundation\RequestStack
   */
  protected $requestStack;

  /**
   * Internal cache of RouteMatch objects.
   *
   * @var \SplObjectStorage
   */
  protected $routeMatches;

  /**
   * Constructs a CurrentRouteMatch object.
   *
   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
   *   The request stack.
   */
  public function __construct(RequestStack $request_stack) {
    $this->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);
  }

}

Members