src/Aviatur/AdminBundle/EventSubscriber/SonataMenuSubscriber.php line 28

Open in your IDE?
  1. <?php
  2. namespace Aviatur\AdminBundle\EventSubscriber;
  3. use Sonata\AdminBundle\Event\ConfigureMenuEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Security\Core\Security;
  6. class SonataMenuSubscriber implements EventSubscriberInterface
  7. {
  8.     private Security $security;
  9.     public function __construct(
  10.         Security $security
  11.     )
  12.     {
  13.         $this->security $security;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             ConfigureMenuEvent::SIDEBAR => 'onMenuConfigure',
  19.         ];
  20.     }
  21.     public function onMenuConfigure(ConfigureMenuEvent $event): void
  22.     {
  23.         $menu $event->getMenu();
  24.         if ($this->security->isGranted('ROLE_CUSTOMER_SERVICE') || $this->security->isGranted('ROLE_SUPERVISOR')) {
  25.             // Busca el grupo existente
  26.             $group $menu->getChild('Azure Storage');
  27.             if (!$group) {
  28.                 $group $menu
  29.                     ->addChild('Azure Storage', [
  30.                         'label' => 'Azure Storage',
  31.                     ])
  32.                     ->setExtra('icon''fas fa-folder');
  33.             }
  34.             // Agrega tu página dentro del grupo
  35.             $group->addChild('Consultar Logs', [
  36.                 'route' => 'aviatur_admin_azure_log_list',
  37.                 'labelAttributes' => ['icon' => 'fa fa-angle-double-right'],
  38.             ]);
  39.             $group->setDisplay(true);
  40.         }
  41.     }
  42. }