BCMBreadcrumbBundle allows you to generate breadcrumbs easily for your Symfony project.
With composer, add:
{
require: {
"benoitmariaux/bcm-breadcrumbbundle": "dev-master"
}
}
Then enable it in your kernel:
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
...
new BCM\BreadcrumbBundle\BCMBreadcrumbBundle(),
...
You have to configure two attributes (label
and parent
) to defaults
in routes you want to add to your breadcrumb :
homepage:
pattern: /
defaults:
_controller: AcmeDemoBundle:Default:home
label: homepage # no parent for homepage
articles:
pattern: /articles
defaults:
_controller: AcmeDemoBundle:Article:list
label: ARTICLES
parent: homepage
article:
pattern: /articles/show/{article_id}
defaults:
_controller: AcmeDemoBundle:Article:article
label: '{article_title}'
parent: articles
Inject all parameters you need for current breadcrumb routes and labels
$breadcrumb = $this->get('bcm_breadcrumb.manager')->render(array(
'article_title' => $article->getTitle(), // useful for article route label
'article_id' => $article->getId() // useful for article route pattern
));
return $this->render('AcmeDemoBundle:Default:article.html.twig', array(
'article' => $article,
'breadcrumb' => $breadcrumb
));
{{ breadcrumb|raw }}
The default view is:
vendor/benoitmariaux/bcm-breadcrumbbundle/BCM/BreadcrumbBundle/Resources/views/bcm-breadcrumb.html.twig
You can overwrite it by creating your own here:
app/Resources/BCMBreadcrumbBundle/views/bcm-breadcrumb.html.twig
You can define translations for your labels with the default domain breadcrumb
:
- breadcrumb.fr.xliff
- breadcrumb.de.xliff