Extending the menu¶
You can add entries to the menu via events easily. You get passed a
:class:`Sylius\\Bundle\\WebBundle\\Event\\MenuBuilderEvent` with FactoryInterface and ItemInterface of
KnpMenu. So you can manipulate the whole menu.
Available only for the backend at the moment.
Example Usage¶
// src/Acme/ReportsBundle/EventListener/MenuBuilderListener.php
namespace Acme\ReportsBundle\EventListener;
use Sylius\Bundle\WebBundle\Event\MenuBuilderEvent;
class MenuBuilderListener
{
public function addBackendMenuItems(MenuBuilderEvent $event)
{
$menu = $event->getMenu();
$menu['sales']->addChild('reports', array(
'route' => 'acme_reports_index',
'labelAttributes' => array('icon' => 'glyphicon glyphicon-stats'),
))->setLabel('Daily and monthly reports');
}
}
- YAML
services: acme_reports.menu_builder: class: Acme\ReportsBundle\EventListener\MenuBuilderListener tags: - { name: kernel.event_listener, event: sylius.menu_builder.backend.main, method: addBackendMenuItems } - { name: kernel.event_listener, event: sylius.menu_builder.backend.sidebar, method: addBackendMenuItems }
- XML
<!-- src/Acme/ReportsBundle/Resources/config/services.xml --> <?xml version="1.0" encoding="UTF-8" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <services> <service id="acme_reports.menu_builder" class="Acme\ReportsBundle\EventListener\MenuBuilderListener"> <tag name="kernel.event_listener" event="sylius.menu_builder.backend.main" method="addBackendMenuItems" /> <tag name="kernel.event_listener" event="sylius.menu_builder.backend.sidebar" method="addBackendMenuItems" /> </service> </services> </container>
- PHP
// src/Acme/ReportsBundle/Resources/config/services.php use Symfony\Component\DependencyInjection\Definition; $definition = new Definition('Acme\ReportsBundle\EventListener\MenuBuilderListener'); $definition->->addTag('kernel.event_listener', array('event' => 'sylius.menu_builder.backend.main', 'method' => 'addBackendMenuItems')); $definition->->addTag('kernel.event_listener', array('event' => 'sylius.menu_builder.backend.sidebar', 'method' => 'addBackendMenuItems')); $container->setDefinition('acme_reports.menu_builder', $definition);