Installation:
composer require awaresoft/breadcrumb-bundle
Ensure your project uses Symfony 4.4+ and includes knplabs/knp-menu-bundle and sonata-project/block-bundle.
Enable the Bundle:
Add to config/bundles.php:
return [
// ...
Awaresoft\BreadcrumbBundle\AwaresoftBreadcrumbBundle::class => ['all' => true],
];
Configure Routes:
Add the bundle’s routes in config/routes.yaml:
awaresoft_breadcrumb:
resource: "@AwaresoftBreadcrumbBundle/Resources/config/routing.yml"
First Use Case: Generate breadcrumbs in a controller:
use Awaresoft\BreadcrumbBundle\Breadcrumb\Breadcrumb;
public function indexAction()
{
$breadcrumb = new Breadcrumb();
$breadcrumb->add('Home', '/');
$breadcrumb->add('Products', '/products');
$breadcrumb->add('Current Page', null);
return $this->render('template.html.twig', [
'breadcrumb' => $breadcrumb,
]);
}
Display in Twig: Use the provided Twig extension in your template:
{{ breadcrumb(breadcrumb) }}
Dynamic Breadcrumb Generation:
Extend the Breadcrumb class to create reusable logic:
class ProductBreadcrumb extends Breadcrumb
{
public function generate(int $id)
{
$this->add('Home', '/');
$this->add('Products', '/products');
$this->add('Product #'.$id, '/products/'.$id);
}
}
Integration with KnpMenu:
Combine with knp-menu-bundle for hierarchical navigation:
{{ knp_menu_render(menu, { 'breadcrumbs': true }) }}
Sonata Block Integration:
Add breadcrumbs as a Sonata block in config/packages/sonata_block.yaml:
sonata_block:
blocks:
sonata.admin.block.breadcrumb: ~
Event-Driven Updates: Use Symfony events to update breadcrumbs dynamically (e.g., after login):
// In a listener
$breadcrumb->clear();
$breadcrumb->add('Dashboard', '/dashboard');
add() for multilingual support.Symlink Issues:
/src/Awaresoft is symlinked correctly.php bin/console cache:clear
Route Conflicts:
routing.yml if needed:
awaresoft_breadcrumb:
resource: "@AwaresoftBreadcrumbBundle/Resources/config/routing.yml"
prefix: /awaresoft
Twig Extension Missing:
config/packages/twig.yaml:
twig:
globals:
breadcrumb: '@awaresoft_breadcrumb.twig.breadcrumb'
Backward Compatibility:
composer update before pushing updates.{{ dump(breadcrumb) }}
APP_DEBUG=true in .env to log breadcrumb-related errors.Custom Renderers:
Override the Twig renderer by creating a new service tagged as awaresoft_breadcrumb.renderer:
services:
app.custom_breadcrumb_renderer:
class: App\Renderer\CustomBreadcrumbRenderer
tags: ['awaresoft_breadcrumb.renderer']
Database Backing:
Store breadcrumbs in a database by extending BreadcrumbProviderInterface and binding it in services.yaml:
services:
app.db_breadcrumb_provider:
class: App\Provider\DbBreadcrumbProvider
arguments: ['@doctrine.orm.entity_manager']
tags: ['awaresoft_breadcrumb.provider']
AJAX Updates:
Use Symfony’s Response to update breadcrumbs via AJAX:
return new Response($this->renderView('breadcrumb/_partial.html.twig', ['breadcrumb' => $breadcrumb]));
How can I help you explore Laravel packages today?