# Admin-Breadcrumb

Die Verwaltungsoberfläche zeigt unter der Hauptnavigation eine **durchgängige Breadcrumb-Leiste** (Dashboard als Startpunkt + weitere Segmente).

## Datenfluss

1. **`administration/base.html.twig`** bindet `_admin_breadcrumb.html.twig` ein und ruft die Twig-Funktion `admin_breadcrumb_items(request, breadcrumb, admin_breadcrumb)` auf.
2. **`AdminBreadcrumbResolver`** ermittelt die Segmente in dieser Reihenfolge:
   - explizit übergebene Variable **`admin_breadcrumb`** (empfohlen),
   - Legacy-Variable **`breadcrumb`** (Listen `{label, url}` oder `MediaFolder[]` für Medien),
   - Services mit Tag **`admin.breadcrumb_provider`** (Interface `TerraFlow\Admin\AdminBreadcrumbProviderInterface`),
   - Eintrag in **`config/packages/admin_breadcrumb.yaml`** (Parameter `admin_breadcrumb.routes`, Schlüssel = Symfony-Routenname),
   - generischer Fallback (humanisierter Routenname).

## Eigenes Modul / Plugin (Twig + Controller)

Admin-Templates sollten `administration/base.html.twig` erweitern. Im Controller:

```php
return $this->render('@MyPlugin/admin/page.html.twig', [
    'admin_breadcrumb' => [
        ['label' => $this->translator->trans('admin.plugins'), 'url' => $this->generateUrl('admin_plugins_index')],
        ['label' => 'Meine Funktion', 'url' => null], // aktives Segment ohne Link
    ],
]);
```

Optional: `icon` pro Eintrag (`Bootstrap-Icons-Klasse`, z. B. `bi-gear`).

## Plugin als Service (Provider)

1. Klasse implementiert `TerraFlow\Admin\AdminBreadcrumbProviderInterface`.
2. Service wird per Autoconfigure erkannt (`_instanceof` in `config/services.yaml`) und mit dem Tag **`admin.breadcrumb_provider`** versehen.
3. `supports(Request $request): bool` z. B. an Routenpräfix `/admin/mein-plugin` koppeln.
4. `getItems(Request $request): array` liefert die Segmente **ohne** Dashboard (nur die „Rest-Kette“).

## Routen-Map (Kern)

Neue Admin-Routen können in **`config/packages/admin_breadcrumb.yaml`** unter `parameters.admin_breadcrumb.routes` ergänzt werden. Pro Route: Liste von Segmenten mit `label_key` (Übersetzungsschlüssel) und optional `route` (Zwischenlink, nicht beim letzten Segment).

Übersetzungen für Breadcrumb-Texte: `admin.breadcrumb.*` und bestehende `admin.*`-Keys in `translations/messages.*.yaml`.
