chamber-orchestra / breadcrumbs
Lightweight, iterable breadcrumb collection for Symfony 8 applications
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/chamber-orchestra/breadcrumbs
Requires
- php: ^8.5
- symfony/http-foundation: ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^13.0
README
Breadcrumbs
A lightweight, iterable breadcrumb collection for Symfony applications. Implements ArrayAccess, Iterator, and Countable for seamless integration with Twig templates and controllers.
Part of the Chamber Orchestra ecosystem.
Requirements
- PHP ^8.5
- Symfony HttpFoundation ^8.0
Installation
composer require chamber-orchestra/breadcrumbs
Usage
Adding breadcrumbs manually
use ChamberOrchestra\Breadcrumbs\Breadcrumbs; $breadcrumbs = new Breadcrumbs(); $breadcrumbs ->addCrumb('Home', 'app_home') ->addCrumb('Products', 'app_products', ['category' => 'books']) ->addCrumb('Current Page');
Adding from a Symfony Request
$breadcrumbs->addRequestCrumb('Current Page', $request);
Extracts _route and _route_params from the request attributes automatically.
Prepending a crumb
$breadcrumbs->addCrumb('Home', 'app_home', [], prepend: true);
Using a closure
$breadcrumbs->addCrumbsClosure(function (Breadcrumbs $crumbs) { $crumbs->addCrumb('Home', 'app_home'); $crumbs->addCrumb('About', 'app_about'); });
Iterating in Twig
<nav aria-label="breadcrumb"> <ol> {% for crumb in breadcrumbs %} <li> {% if crumb.route %} <a href="{{ path(crumb.route, crumb.routeParams) }}">{{ crumb.name }}</a> {% else %} {{ crumb.name }} {% endif %} </li> {% endfor %} </ol> </nav>
Array access
$first = $breadcrumbs[0]; $total = count($breadcrumbs);
License
MIT