function CustomPageExceptionHtmlSubscriber::makeSubrequestToCustomPath

Same name in other branches
  1. 9 core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php \Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber::makeSubrequestToCustomPath()
  2. 8.9.x core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php \Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber::makeSubrequestToCustomPath()
  3. 10 core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php \Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber::makeSubrequestToCustomPath()

Makes a subrequest to retrieve the custom error page.

Parameters

\Symfony\Component\HttpKernel\Event\ExceptionEvent $event: The event to process.

string $custom_path: The custom path to which to make a subrequest for this error message.

int $status_code: The status code for the error being handled.

2 calls to CustomPageExceptionHtmlSubscriber::makeSubrequestToCustomPath()
CustomPageExceptionHtmlSubscriber::on403 in core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php
CustomPageExceptionHtmlSubscriber::on404 in core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php

File

core/lib/Drupal/Core/EventSubscriber/CustomPageExceptionHtmlSubscriber.php, line 95

Class

CustomPageExceptionHtmlSubscriber
Exception subscriber for handling core custom HTML error pages.

Namespace

Drupal\Core\EventSubscriber

Code

protected function makeSubrequestToCustomPath(ExceptionEvent $event, $custom_path, $status_code) {
    $url = Url::fromUserInput($custom_path);
    if ($url->isRouted()) {
        $access_result = $this->accessManager
            ->checkNamedRoute($url->getRouteName(), $url->getRouteParameters(), NULL, TRUE);
        $request = $event->getRequest();
        // Merge the custom path's route's access result's cacheability metadata
        // with the existing one (from the master request), otherwise create it.
        if (!$request->attributes
            ->has(AccessAwareRouterInterface::ACCESS_RESULT)) {
            $request->attributes
                ->set(AccessAwareRouterInterface::ACCESS_RESULT, $access_result);
        }
        else {
            $existing_access_result = $request->attributes
                ->get(AccessAwareRouterInterface::ACCESS_RESULT);
            if ($existing_access_result instanceof RefinableCacheableDependencyInterface) {
                $existing_access_result->addCacheableDependency($access_result);
            }
        }
        // Only perform the subrequest if the custom path is actually accessible.
        if (!$access_result->isAllowed()) {
            return;
        }
    }
    $this->makeSubrequest($event, $custom_path, $status_code);
}

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