A Breadcrumbs bundle for Symfony2.
This bundle is based on the xi-bundle-breadcrumbs bundle only modified to work with jms/i18n-routing-bundle internationalized routing. These modifications do work in my own projects, but I'm not sure if this is the way xi and jms intended to.
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.