⭐ Found this useful? Install from Packagist and consider starring the GitHub repository.
Symfony bundle for database-driven breadcrumb trails: match the current route by name + static parameters, walk a parent chain, support i18n (JSON translations on entities), optional links, per-collection presentation (icons, CSS, responsive JSON), and PSR-6 caching of serialized item rows.
Design aligns with DashboardMenuBundle (Doctrine, YAML defaults, cache pool, Twig namespace overrides).
Latest release: v2.0.2 (2026-07-16). Requires PHP 8.2+ and Symfony 7+. Tables: dashboard_breadcrumb_* (see UPGRADING.md from v1.2.x).
MVP (v2.0.2): entities (dashboard_breadcrumb_* tables, aligned with DashboardMenuBundle), repositories, BreadcrumbLoader, BreadcrumbUrlResolver, Twig (breadcrumb_trail, breadcrumb_render), optional web dashboard, presentation options, dashboard i18n en/es/de/fr/it/nl/pt. Demo: Symfony 8.1 (8021) with FrankenPHP. Flex recipe in .symfony/recipe/. Planned: migration command, event-based enrichers.
FrankenPHP worker mode: demos use worker-enabled Caddyfile for production-style runs; development uses Caddyfile.dev without workers. See docs/DEMO-FRANKENPHP.md.
- PHP
>=8.2 <8.6 - Symfony 7.x or 8.x (see
composer.json) - Doctrine ORM
composer require nowo-tech/breadcrumb-kit-bundleRegister the bundle in config/bundles.php:
Nowo\BreadcrumbKitBundle\NowoBreadcrumbKitBundle::class => ['all' => true],With Symfony Flex, the recipe (when available from Packagist or your recipe index) registers the bundle and adds config/routes. Without Flex, see docs/INSTALLATION.md for manual steps.
Example config/packages/nowo_breadcrumb_kit.yaml:
nowo_breadcrumb_kit:
locales: ['en', 'es']
default_locale: 'en'
default_collection: 'default'
cache:
ttl: 60
pool: cache.app- GitHub Actions CI requirements
- Installation
- Configuration
- Usage
- Contributing
- Code of Conduct
- Changelog
- Upgrading
- Release
- Security
- Engram
- Spec-driven development
- GitHub Spec Kit manual
- DEMO-FRANKENPHP.md — FrankenPHP demo (
demo/symfony8)
Symfony 8 (Symfony 8.1, PHP 8.4):
make -C demo/symfony8 upOpens at http://localhost:8021 by default; the app redirects / to /en/.
- PHP: run
composer test-coverageormake test-coverage(Docker). Update the percentage below when you change code or tests; CI enforces a green build and generatescoverage.xml.
| Language | Coverage (Lines / notes) |
|---|---|
| PHP | 99.52% (Lines, PHPUnit + PCOV; run make test-coverage to refresh) |
| TS/JS | N/A |
| Python | N/A |
composer install
composer test
composer phpstanWith Docker from the bundle root:
make install
make test-coverageMIT. See LICENSE.