如果需要对面包屑进行重新构造,那么应在对应模块下新建 xxxBreadcrumbBuilder 类(路径:模块/src/),并且实现 BreadcrumbBuilderInterface 接口,如下
namespace Drupal\xxx;
/**
* Breadcrumb builder for xxx.
*/
class xxxBreadcrumbBuilder implements BreadcrumbBuilderInterface {
/**
* {@inheritdoc}
*/
public function applies(RouteMatchInterface $route_match) {
return $route_match->getRouteName() == 'route_name';
}
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match) {
$breadcrumb = new Breadcrumb();
$links = [Link::createFromRoute($this->t('Home'), '<front>')];
$links[] = .... ;
$breadcrumb->setLinks($links);
$breadcrumb->addCacheContexts(['route']);//根据route添加缓存上下文
// $breadcrumb->addCacheContexts(['url']);//根据url添加缓存上下文
return $breadcrumb;
}
}
(具体实例可参考 BookBreadcrumbBuilder )
若xxx模块没有对应 xxxBreadcrumbBuilder 类,那么该模块下的面包屑是由 EasyBreadcrumbBuilder 构造。
(注:学习笔记)