You are here

protected function BreadcrumbManagerBuilder::getRequestForPath in Breadcrumb Manager 8

Matches a path in the router.

Parameters

string $path: The request path with a leading slash.

array $exclude: An array of paths or system paths to skip.

Return value

\Symfony\Component\HttpFoundation\Request A populated request object or NULL if the path couldn't be matched.

Overrides PathBasedBreadcrumbBuilder::getRequestForPath

1 call to BreadcrumbManagerBuilder::getRequestForPath()
BreadcrumbManagerBuilder::build in src/Breadcrumb/BreadcrumbManagerBuilder.php
Builds the breadcrumb.

File

src/Breadcrumb/BreadcrumbManagerBuilder.php, line 251

Class

BreadcrumbManagerBuilder
Class BreadcrumbManagerBuilder.

Namespace

Drupal\breadcrumb_manager\Breadcrumb

Code

protected function getRequestForPath($path, array $exclude) {
  if (in_array($path, $exclude)) {
    return NULL;
  }

  // @todo Use the RequestHelper once https://www.drupal.org/node/2090293 is
  //   fixed.
  $request = Request::create($path);

  // Performance optimization: set a short accept header to reduce overhead in
  // AcceptHeaderMatcher when matching the request.
  $request->headers
    ->set('Accept', 'text/html');

  // Find the system path by resolving aliases, language prefix, etc.
  $processed = $this->pathProcessor
    ->processInbound($path, $request);
  if (empty($processed) || $this
    ->isExcludedPath($processed)) {
    return NULL;
  }
  $this->currentPath
    ->setPath($processed, $request);

  // Attempt to match this path to provide a fully built request.
  try {
    $request->attributes
      ->add($this->router
      ->matchRequest($request));
    return $request;
  } catch (ParamNotConvertedException $e) {
    return NULL;
  } catch (ResourceNotFoundException $e) {
    return NULL;
  } catch (MethodNotAllowedException $e) {
    return NULL;
  } catch (AccessDeniedHttpException $e) {
    return NULL;
  }
}