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

v8.0.3 2026-02-16 19:44 UTC

This package is auto-updated.

Last update: 2026-02-21 17:04:56 UTC


README

PHP Composer PHP CS Fixer Code Style: PER-CS Code Style: Symfony PHPStan Level max PHP 8.5 Symfony 8.0 Latest Stable Version License

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