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
[XiBreadcrumbsBundle]
git=http://github.com/xi-project/xi-bundle-breadcrumbs.git
target=/bundles/Xi/Bundle/BreadcrumbsBundle
version=origin/master
Version declaration is optional, but recommended for Symfony 2.0.x as the master branch
will be for Symfony 2.1, which uses composer instead of deps.
<?php
'Xi\Bundle' => __DIR__.'/../vendor/bundles',
?>
<?php
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.