function AccessManager::checkNamedRoute

Same name in other branches
  1. 9 core/lib/Drupal/Core/Access/AccessManager.php \Drupal\Core\Access\AccessManager::checkNamedRoute()
  2. 8.9.x core/lib/Drupal/Core/Access/AccessManager.php \Drupal\Core\Access\AccessManager::checkNamedRoute()
  3. 10 core/lib/Drupal/Core/Access/AccessManager.php \Drupal\Core\Access\AccessManager::checkNamedRoute()

Overrides AccessManagerInterface::checkNamedRoute

File

core/lib/Drupal/Core/Access/AccessManager.php, line 82

Class

AccessManager
Attaches access check services to routes and runs them on request.

Namespace

Drupal\Core\Access

Code

public function checkNamedRoute($route_name, array $parameters = [], ?AccountInterface $account = NULL, $return_as_object = FALSE) {
    try {
        $route = $this->routeProvider
            ->getRouteByName($route_name);
        // ParamConverterManager relies on the route name and object being
        // available from the parameters array.
        $parameters[RouteObjectInterface::ROUTE_NAME] = $route_name;
        $parameters[RouteObjectInterface::ROUTE_OBJECT] = $route;
        $upcasted_parameters = $this->paramConverterManager
            ->convert($parameters + $route->getDefaults());
        $route_match = new RouteMatch($route_name, $route, $upcasted_parameters, $parameters);
        return $this->check($route_match, $account, NULL, $return_as_object);
    } catch (RouteNotFoundException) {
        // Cacheable until extensions change.
        $result = AccessResult::forbidden()->addCacheTags([
            'config:core.extension',
        ]);
        return $return_as_object ? $result : $result->isAllowed();
    } catch (ParamNotConvertedException) {
        // Uncacheable because conversion of the parameter may not have been
        // possible due to dynamic circumstances.
        $result = AccessResult::forbidden()->setCacheMaxAge(0);
        return $return_as_object ? $result : $result->isAllowed();
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.