W3cubDocs

/Drupal 8

protected function CustomPageExceptionHtmlSubscriber::makeSubrequestToCustomPath

protected CustomPageExceptionHtmlSubscriber::makeSubrequestToCustomPath(GetResponseForExceptionEvent $event, $custom_path, $status_code)

Makes a subrequest to retrieve the custom error page.

Parameters

\Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $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.

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(GetResponseForExceptionEvent $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);
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!EventSubscriber!CustomPageExceptionHtmlSubscriber.php/function/CustomPageExceptionHtmlSubscriber::makeSubrequestToCustomPath/8.1.x