function BreadcrumbManager::build

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php \Drupal\Core\Breadcrumb\BreadcrumbManager::build()
  2. 8.9.x core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php \Drupal\Core\Breadcrumb\BreadcrumbManager::build()
  3. 11.x core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php \Drupal\Core\Breadcrumb\BreadcrumbManager::build()

Builds the breadcrumb.

Parameters

\Drupal\Core\Routing\RouteMatchInterface $route_match: The current route match.

Return value

\Drupal\Core\Breadcrumb\Breadcrumb A breadcrumb.

Overrides BreadcrumbBuilderInterface::build

File

core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php, line 72

Class

BreadcrumbManager
Provides a breadcrumb manager.

Namespace

Drupal\Core\Breadcrumb

Code

public function build(RouteMatchInterface $route_match) {
  $breadcrumb = new Breadcrumb();
  $context = [
    'builder' => NULL,
  ];
  // Call the build method of registered breadcrumb builders,
  // until one of them returns an array.
  foreach ($this->getSortedBuilders() as $builder) {
    if (!$builder->applies($route_match)) {
      // The builder does not apply, so we continue with the other builders.
      continue;
    }
    $breadcrumb = $builder->build($route_match);
    if ($breadcrumb instanceof Breadcrumb) {
      $context['builder'] = $builder;
      break;

    }
    else {
      throw new \UnexpectedValueException('Invalid breadcrumb returned by ' . get_class($builder) . '::build().');
    }
  }
  // Allow modules to alter the breadcrumb.
  $this->moduleHandler
    ->alter('system_breadcrumb', $breadcrumb, $route_match, $context);
  return $breadcrumb;
}

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