A Breadcrumbs bundle for Symfony2.
This is different from other breadcrumb bundles, because it utilizes routes
as a tree to build the breadcrumbs in order to not pollute the controller
actions with repetitive breadcrumbs code.
- Implement breadcrumbs with configurable and internationalised labels and urls
- Keep it DRY: Do not repeat breadcrumbs code for the same page in several controller actions
- Avoid using annotations either
- Allow cyclical loops on breadcrumb hierarchy and handle it intelligently
"require": {
# ..
"xi/breadcrumbs-bundle": ">=2.1"
# ..
}
public function registerBundles()
{
$bundles = array(
...
new Xi\Bundle\BreadcrumbsBundle\XiBreadcrumbsBundle(),
);
...
}
Add {{ xi_breadcrumbs() }}
into your template and add parent
and label
into your route defaults.
Label is optional, and defaults to the route name.
root:
pattern: /
defaults:
label: "home"
foo:
pattern: /foo
defaults:
parent: "root"
bar:
pattern: /foo/bar/{slug}
defaults:
label: "bar {slug}"
parent: "foo"
Parent
is the name of the parent route. Label
can have placeholder values between braces, as shown
below with {slug}
. Note that child routes should have all the placeholders available that their parents
will use – otherwise the placeholders will be stripped from the label.
For internationalised routes using BesimpleI18nRoutingBundle, use a similar array of locales as in the locales
option.
xi_service:
locales:
en: /service
fi: /palvelu
defaults:
label:
en: "Services"
fi: "Palvelut"
For more usage examples, see the Yaml files at Tests/Fixtures
directory.