Skip to content

Commit c9bdb05

Browse files
committed
Update docs
1 parent a20ce81 commit c9bdb05

File tree

2 files changed

+13
-22
lines changed

2 files changed

+13
-22
lines changed

docs/cookbook/admin_panel/menu.md

Lines changed: 13 additions & 21 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): void
3430
{
35-
$menu = $this->factory->createItem('root');
31+
$menu = $event->getMenu();
3632

3733
$menu
3834
->addChild('dashboard', [
@@ -41,8 +37,6 @@ final readonly class MenuBuilder implements MenuBuilderInterface
4137
->setLabel('sylius.ui.dashboard')
4238
->setLabelAttribute('icon', 'tabler:dashboard')
4339
;
44-
45-
return $menu;
4640
}
4741
}
4842
```
@@ -59,18 +53,16 @@ Now you can add submenu items:
5953

6054
```php
6155
// ...
62-
#[AsDecorator(decorates: 'sylius_admin_ui.knp.menu_builder')]
63-
final readonly class MenuBuilder implements MenuBuilderInterface
56+
#[AsEventListener(MenuBuilder::EVENT_NAME)]
57+
final readonly class MenuListener
6458
{
6559
// ...
6660

67-
public function createMenu(array $options): ItemInterface
61+
public function __invoke(MenuBuilderEvent $event): void
6862
{
69-
$menu = $this->factory->createItem('root');
63+
$menu = $event->getMenu();
7064
// ...
7165
$this->addLibrarySubMenu($menu);
72-
73-
return $menu;
7466
}
7567

7668
private function addLibrarySubMenu(ItemInterface $menu): void

tests/Functional/BookTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,6 @@ public function testShowingMenu(): void
307307

308308
self::assertSelectorExists('#sidebar-menu');
309309

310-
self::assertAnySelectorTextContains('#sidebar-menu [href="#navbar-library"]', 'Library');
311310
self::assertAnySelectorTextContains('#sidebar-menu [href="#navbar-library"]', 'Library');
312311
self::assertAnySelectorTextContains('#sidebar-menu [href="#navbar-configuration"]', 'Configuration');
313312
self::assertAnySelectorTextContains('#sidebar-menu [href="/admin/conferences"]', 'Conferences');

0 commit comments

Comments
 (0)