lib/aw/menu-bundle/EventSubscriber/AutoEventSubscriber.php line 23

  1. <?php
  2. namespace Aw\MenuBundle\EventSubscriber;
  3. use Aw\MenuBundle\Event\MenuAdminEvent;
  4. use Aw\MenuBundle\Helper\MenuHelper;
  5. use Knp\Menu\ItemInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class AutoEventSubscriber extends  MenuHelper implements EventSubscriberInterface
  8. {
  9.     /**
  10.      * @var ItemInterface
  11.      */
  12.     protected ItemInterface $menu;
  13.     /**
  14.      * @param MenuAdminEvent $event
  15.      */
  16.     public function onMenuConfigure(MenuAdminEvent $event): void
  17.     {
  18.         $this->menu $event->getMenu();
  19.         $items $this->getItems();
  20.         $rights = [];
  21.         foreach ($items as $data) {
  22.             if(isset($data[1]['permission'])) {
  23.                 foreach ($data[2] as $datum) {
  24.                     $rights[$datum][] = $data[1]['permission'];
  25.                 }
  26.             }
  27.         }
  28.         foreach ($items as $data) {
  29.             if(isset($rights[$data[0]]))
  30.                 $data[1]['permission'] = $rights[$data[0]];
  31.             $this->addItem($data[0], $data[1], $data[2]);
  32.         }
  33.     }
  34.     public static function getSubscribedEvents(): array
  35.     {
  36.         return [
  37.             MenuAdminEvent::CONFIGURE => ['onMenuConfigure',80],
  38.         ];
  39.     }
  40. }