Sylius: как настроить меню пользователя в верхней правой панели?

Как описано в официальных документах, мне удалось настроить как меню 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".

Как это можно сделать правильно?


person itinance    schedule 10.08.2018    source источник


Ответы (1)


Есть два способа:

1) вы должны переопределить эти строки: https://github.com/Sylius/Sylius/blob/1.2/src/Sylius/Bundle/ShopBundle/Resources/views/layout.html.twig#L33 .

2) Или вы можете переопределить блок top (1 строка выше) в своем пользовательском шаблоне ветки, который наследует упомянутый шаблон.

person Dr.X    schedule 10.08.2018