vendor/shopware/core/Framework/Adapter/Twig/Extension/BuildBreadcrumbExtension.php line 62
<?php declare(strict_types=1);namespace Shopware\Core\Framework\Adapter\Twig\Extension;use Shopware\Core\Content\Category\CategoryCollection;use Shopware\Core\Content\Category\CategoryEntity;use Shopware\Core\Content\Category\Service\CategoryBreadcrumbBuilder;use Shopware\Core\Framework\Context;use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;use Shopware\Core\Framework\Log\Package;use Shopware\Core\System\SalesChannel\SalesChannelContext;use Twig\Extension\AbstractExtension;use Twig\TwigFunction;#[Package('core')]class BuildBreadcrumbExtension extends AbstractExtension{/*** @internal*/public function __construct(private readonly CategoryBreadcrumbBuilder $categoryBreadcrumbBuilder,private readonly EntityRepository $categoryRepository) {}public function getFunctions(): array{return [new TwigFunction('sw_breadcrumb_full', $this->getFullBreadcrumb(...), ['needs_context' => true]),];}/*** @param array<string, mixed> $twigContext** @return array<string, CategoryEntity>*/public function getFullBreadcrumb(array $twigContext, CategoryEntity $category, Context $context): array{$salesChannel = null;if (\array_key_exists('context', $twigContext) && $twigContext['context'] instanceof SalesChannelContext) {$salesChannel = $twigContext['context']->getSalesChannel();}$seoBreadcrumb = $this->categoryBreadcrumbBuilder->build($category, $salesChannel);if ($seoBreadcrumb === null) {return [];}/** @var list<string> $categoryIds */$categoryIds = array_keys($seoBreadcrumb);if (empty($categoryIds)) {return [];}$criteria = new Criteria($categoryIds);$criteria->setTitle('breadcrumb-extension');/** @var CategoryCollection $categories */$categories = $this->categoryRepository->search($criteria, $context)->getEntities();$breadcrumb = [];foreach ($categoryIds as $categoryId) {if ($categories->get($categoryId) === null) {continue;}$breadcrumb[$categoryId] = $categories->get($categoryId);}return $breadcrumb;}}