代码之家  ›  专栏  ›  技术社区  ›  itinance

如何定制右上角的用户菜单?

  •  0
  • itinance  · 技术社区  · 6 年前

    Docs ,我可以为用户自定义管理仪表板菜单和帐户部分的菜单。

    但是,我如何自定义菜单,它显示在右上角的栏中,包括菜单项,如“ “和” 注销 "? 我想在这里加一些东西。

    enter image description here

    到目前为止我所做的:

    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\u builder.frontend.main”还是“sylius.shop.menu\u builder.account”都会出现在这里。

    怎么才能做好呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Dr.X    6 年前

    有两种方法:

    1) 您应该覆盖这些行: https://github.com/Sylius/Sylius/blob/1.2/src/Sylius/Bundle/ShopBundle/Resources/views/layout.html.twig#L33 .

    2) 或者可以替代块 top (上面1行)在您的自定义细枝模板中,它继承了上述模板。