BreadcrumbBuilder.php in Current Page Crumb 8        
                          
                  
                        
  
  
  
  
  
File
  src/BreadcrumbBuilder.php
  
    View source  
  <?php
namespace Drupal\current_page_crumb;
use Drupal\Component\Utility\Unicode;
use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Link;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\system\PathBasedBreadcrumbBuilder;
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
class BreadcrumbBuilder extends PathBasedBreadcrumbBuilder {
  
  public function build(RouteMatchInterface $route_match) {
    $breadcrumbs = parent::build($route_match);
    $request = \Drupal::request();
    $path = trim($this->context
      ->getPathInfo(), '/');
    $path_elements = explode('/', $path);
    $route = $request->attributes
      ->get(RouteObjectInterface::ROUTE_OBJECT);
    
    if ($route && !$route
      ->getOption('_admin_route') && !$this->pathMatcher
      ->isFrontPage()) {
      $title = $this->titleResolver
        ->getTitle($request, $route);
      if (!isset($title)) {
        
        $title = str_replace([
          '-',
          '_',
        ], ' ', Unicode::ucfirst(end($path_elements)));
      }
      $breadcrumbs
        ->addLink(Link::createFromRoute($title, '<none>'));
    }
    
    $parameters = $route_match
      ->getParameters();
    foreach ($parameters as $key => $parameter) {
      if ($key === 'view_id') {
        $breadcrumbs
          ->addCacheTags([
          'config:views.view.' . $parameter,
        ]);
      }
      if ($parameter instanceof CacheableDependencyInterface) {
        $breadcrumbs
          ->addCacheableDependency($parameter);
      }
    }
    
    $breadcrumbs
      ->addCacheContexts([
      'route',
      'url.path',
      'languages',
    ]);
    return $breadcrumbs;
  }
}