Как описано в официальных документах, мне удалось настроить как меню Admin-Dashboard, так и меню в разделе учетной записи для пользователя.
Однако как настроить меню, отображаемое в верхней правой панели, включая такие пункты меню, как «Мой аккаунт» и «Выход»? Я хочу добавить сюда несколько пунктов.
Это то, что я имею в виду:
Что я сделал до сих пор:
Сначала я определил MenuBuilder-Customization в services.yml:
app.listener.shop.menu_builder:
class: AppBundle\Menu\AccountMenuListener
tags:
- { name: kernel.event_listener, event: sylius.menu.shop.account, method: addAccountMenuItems }
- { name: kernel.event_listener, event: sylius.shop.menu_builder.account, method: addTopMenuMenuItems }
- { name: kernel.event_listener, event: sylius.menu_builder.frontend.main, method: addTopMenuMenuItems }
А это мой настроенный MenuBuilder:
<?php
namespace AppBundle\Menu;
use Knp\Menu\MenuItem;
use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
final class AccountMenuListener
{
/**
* @param MenuBuilderEvent $event
*/
public function addAccountMenuItems(MenuBuilderEvent $event): void
{
$menu = $event->getMenu();
$menu->removeChild('address_book');
$menu->removeChild('order_history');
$menu
->addChild('new', ['route' => 'sylius_shop_homepage'])
->setLabel('My Reservations')
->setLabelAttribute('icon', 'star');
}
public function addTopMenuMenuItems(MenuBuilderEvent $event): void
{
$menu = $event->getMenu();
// list all items
foreach($menu->getChildren() as $child) {
echo $child->getName() . '<br>';
}
die;
}
}
По крайней мере, для бокового меню, которое появляется в разделе «Моя учетная запись», все работало хорошо. Но до правого верхнего меню таким образом добраться нельзя. Будет ли здесь ловить "sylius.menu_builder.frontend.main" или "sylius.shop.menu_builder.account".
Как это можно сделать правильно?