Installation
composer require thormeier/breadcrumb-bundle
Register the bundle in config/bundles.php (Symfony 4+) or AppKernel.php (Symfony 3):
Thormeier\BreadcrumbBundle\ThormeierBreadcrumbBundle::class => ['all' => true],
Basic Configuration
Add to config/packages/thormeier_breadcrumb.yaml (Symfony 4+):
thormeier_breadcrumb: ~
First Use Case Define breadcrumbs in route annotations (Symfony 3) or YAML (Symfony 4+):
# config/routes.yaml
home:
path: /
defaults:
breadcrumb:
label: Home
contact:
path: /contact
defaults:
breadcrumb:
label: Contact
parent_route: home
Render in Twig:
{{ render(thormeier_breadcrumb) }}
parent_route to nest breadcrumbs (e.g., parent_route: home for /contact).breadcrumb service:
$this->get('thormeier_breadcrumb')->setLabel('contact', 'Support');
{id}) into labels:
defaults:
breadcrumb:
label: 'Post {id}'
template in config:
thormeier_breadcrumb:
template: 'bundles/acme/templates/breadcrumb.html.twig'
{% if thormeier_breadcrumb|length > 0 %}
{{ render(thormeier_breadcrumb) }}
{% endif %}
kernel.request to modify breadcrumbs dynamically:
$event->getResponse()->headers->set('X-Breadcrumb', 'Custom');
defaults:
breadcrumb:
label: '{{ _locale|default('en') }} Home'
parent_route loops (e.g., A → B → A).parent_route exists in the router.php bin/console cache:clear
php bin/console debug:router
dump($this->get('thormeier_breadcrumb')->getBreadcrumbs());
BreadcrumbProviderInterface for non-route-based breadcrumbs.BreadcrumbManager to add logic (e.g., SEO tags):
services:
app.breadcrumb.manager:
class: App\Service\CustomBreadcrumbManager
decorates: thormeier_breadcrumb.manager
ThormeierBreadcrumbBundle:Breadcrumb:breadcrumb.html.twig.|raw in Twig if needed.How can I help you explore Laravel packages today?