Skip to content

Commit 4873b3d

Browse files
committed
Update docs
1 parent a20ce81 commit 4873b3d

File tree

1 file changed

+13
-17
lines changed

1 file changed

+13
-17
lines changed

docs/cookbook/admin_panel/menu.md

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,25 @@
1010

1111
</div>
1212

13-
To customize the admin menu, you need to decorate the `sylius_admin_ui.knp.menu_builder` service.
13+
To customize the admin menu, you need to listen for the `sylius_admin_ui.menu.event.main` event. This way, you can implement
14+
multiple listeners e.g. in different bounded contexts of your application.
1415

1516
```php
1617
declare(strict_types=1);
1718

1819
namespace App\Menu;
1920

20-
use Knp\Menu\FactoryInterface;
2121
use Knp\Menu\ItemInterface;
22-
use Sylius\AdminUi\Knp\Menu\MenuBuilderInterface;
23-
use Symfony\Component\DependencyInjection\Attribute\AsDecorator;
22+
use Sylius\AdminUi\Knp\Menu\Event\MenuBuilderEvent;
23+
use Sylius\AdminUi\Knp\Menu\MenuBuilder;
24+
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
2425

25-
#[AsDecorator(decorates: 'sylius_admin_ui.knp.menu_builder')]
26-
final readonly class MenuBuilder implements MenuBuilderInterface
26+
#[AsEventListener(MenuBuilder::EVENT_NAME)]
27+
final readonly class MenuListener
2728
{
28-
public function __construct(
29-
private readonly FactoryInterface $factory,
30-
) {
31-
}
32-
33-
public function createMenu(array $options): ItemInterface
29+
public function __invoke(MenuBuilderEvent $event): ItemInterface
3430
{
35-
$menu = $this->factory->createItem('root');
31+
$menu = $event->getMenu();
3632

3733
$menu
3834
->addChild('dashboard', [
@@ -59,14 +55,14 @@ Now you can add submenu items:
5955

6056
```php
6157
// ...
62-
#[AsDecorator(decorates: 'sylius_admin_ui.knp.menu_builder')]
63-
final readonly class MenuBuilder implements MenuBuilderInterface
58+
#[AsEventListener(MenuBuilder::EVENT_NAME)]
59+
final readonly class MenuListener
6460
{
6561
// ...
6662

67-
public function createMenu(array $options): ItemInterface
63+
public function __invoke(MenuBuilderEvent $event): ItemInterface
6864
{
69-
$menu = $this->factory->createItem('root');
65+
$menu = $event->getMenu();
7066
// ...
7167
$this->addLibrarySubMenu($menu);
7268

0 commit comments

Comments
 (0)