3 namespace Drupal\comment;
5 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
6 use Drupal\Core\Breadcrumb\Breadcrumb;
7 use Drupal\Core\Entity\EntityManagerInterface;
9 use Drupal\Core\Routing\RouteMatchInterface;
10 use Drupal\Core\StringTranslation\StringTranslationTrait;
13 * Class to define the comment breadcrumb builder.
15 class CommentBreadcrumbBuilder implements BreadcrumbBuilderInterface {
16 use StringTranslationTrait;
19 * The comment storage.
21 * @var \Drupal\Core\Entity\EntityStorageInterface
26 * Constructs the CommentBreadcrumbBuilder.
28 * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
31 public function __construct(EntityManagerInterface $entity_manager) {
32 $this->storage = $entity_manager->getStorage('comment');
38 public function applies(RouteMatchInterface $route_match) {
39 return $route_match->getRouteName() == 'comment.reply' && $route_match->getParameter('entity');
45 public function build(RouteMatchInterface $route_match) {
46 $breadcrumb = new Breadcrumb();
47 $breadcrumb->addCacheContexts(['route']);
48 $breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '<front>'));
50 $entity = $route_match->getParameter('entity');
51 $breadcrumb->addLink(new Link($entity->label(), $entity->urlInfo()));
52 $breadcrumb->addCacheableDependency($entity);
54 if (($pid = $route_match->getParameter('pid')) && ($comment = $this->storage->load($pid))) {
55 /** @var \Drupal\comment\CommentInterface $comment */
56 $breadcrumb->addCacheableDependency($comment);
57 // Display link to parent comment.
58 // @todo Clean-up permalink in https://www.drupal.org/node/2198041
59 $breadcrumb->addLink(new Link($comment->getSubject(), $comment->urlInfo()));