class CurrentRouteMatch
Same name in other branches
- 9 core/lib/Drupal/Core/Routing/CurrentRouteMatch.php \Drupal\Core\Routing\CurrentRouteMatch
- 8.9.x core/lib/Drupal/Core/Routing/CurrentRouteMatch.php \Drupal\Core\Routing\CurrentRouteMatch
- 11.x 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
File
-
core/
lib/ Drupal/ Core/ Routing/ CurrentRouteMatch.php, line 11
Namespace
Drupal\Core\RoutingView 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
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.