Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

Breadcrumb.php

Namespace

Drupal\Core\Breadcrumb

File

core/lib/Drupal/Core/Breadcrumb/Breadcrumb.php

View source
<?php

namespace Drupal\Core\Breadcrumb;

use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
use Drupal\Core\Cache\RefinableCacheableDependencyTrait;
use Drupal\Core\Link;
use Drupal\Core\Render\RenderableInterface;

/**
 * Used to return generated breadcrumbs with associated cacheability metadata.
 */
class Breadcrumb implements RenderableInterface, RefinableCacheableDependencyInterface {
    use RefinableCacheableDependencyTrait;
    
    /**
     * An ordered list of links for the breadcrumb.
     *
     * @var \Drupal\Core\Link[]
     */
    protected $links = [];
    
    /**
     * Gets the breadcrumb links.
     *
     * @return \Drupal\Core\Link[]
     */
    public function getLinks() {
        return $this->links;
    }
    
    /**
     * Sets the breadcrumb links.
     *
     * @param \Drupal\Core\Link[] $links
     *   The breadcrumb links.
     *
     * @return $this
     *
     * @throws \LogicException
     *   Thrown when setting breadcrumb links after they've already been set.
     */
    public function setLinks(array $links) {
        if (!empty($this->links)) {
            throw new \LogicException('Once breadcrumb links are set, only additional breadcrumb links can be added.');
        }
        $this->links = $links;
        return $this;
    }
    
    /**
     * Appends a link to the end of the ordered list of breadcrumb links.
     *
     * @param \Drupal\Core\Link $link
     *   The link appended to the breadcrumb.
     *
     * @return $this
     */
    public function addLink(Link $link) {
        $this->links[] = $link;
        return $this;
    }
    
    /**
     * {@inheritdoc}
     */
    public function toRenderable() {
        $build = [
            '#cache' => [
                'contexts' => $this->cacheContexts,
                'tags' => $this->cacheTags,
                'max-age' => $this->cacheMaxAge,
            ],
        ];
        if (!empty($this->links)) {
            $build += [
                '#theme' => 'breadcrumb',
                '#links' => $this->links,
            ];
        }
        return $build;
    }

}

Classes

Title Deprecated Summary
Breadcrumb Used to return generated breadcrumbs with associated cacheability metadata.

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal