vendor/elcoag/symfony-process-bundle/src/EventSubscriber/KnpMenuBuilderSubscriber.php line 41

  1. <?php
  2. namespace Elcoag\SymfonyProcessBundle\EventSubscriber;
  3. use Elcoag\SymfonyAdminlteBundle\Event\KnpMenuEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  6. /**
  7.  * Class KnpMenuBuilderSubscriber configures the main navigation utilizing the KnpMenuBundle.
  8.  */
  9. class KnpMenuBuilderSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var AuthorizationCheckerInterface
  13.      */
  14.     private $security;
  15.     /**
  16.      * @param AuthorizationCheckerInterface $security
  17.      */
  18.     public function __construct(AuthorizationCheckerInterface $security)
  19.     {
  20.         $this->security $security;
  21.     }
  22.     /**
  23.      * @return array
  24.      */
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             KnpMenuEvent::class => ['onSetupNavbar'100],
  29.         ];
  30.     }
  31.     /**
  32.      * Generate the main menu.
  33.      *
  34.      * @param KnpMenuEvent $event
  35.      */
  36.     public function onSetupNavbar(KnpMenuEvent $event)
  37.     {
  38.         /*
  39.         $config = [
  40.             'menu-label' => ['label' => 'Process'],
  41.             'process_docs' => ['label' => 'Docs', 'icon' => 'fas fa-book'],
  42.             'process_list' => ['label' => 'List', 'icon' => 'fas fa-list', 'badges' => [['value' => 'all', 'color' => 'red']]],
  43.             'process_create' => ['label' => 'Create', 'icon' => 'fas fa-plus'],
  44.         ];
  45.         $this->addMenuItemsByConfig($event, $config);*/
  46.         $config = [
  47.             'menu-label_server' => ['label' => 'Server'],
  48.             'app_server_index' => ['label' => 'List''icon' => 'fas fa-list'],
  49.             'app_server_new' => ['label' => 'New''icon' => 'fas fa-plus'],
  50.             'menu-label_process' => ['label' => 'Process'],
  51.             'app_process_index' => ['label' => 'List''icon' => 'fas fa-list'],
  52.             'app_process_new' => ['label' => 'New''icon' => 'fas fa-plus'],
  53.             //'process_show' => ['label' => 'List', 'icon' => 'fas fa-list', 'badges' => [['value' => 'all', 'color' => 'red']]],
  54.             //'process_show' => ['label' => 'Create', 'icon' => 'fas fa-plus'],
  55.         ];
  56.         $this->addMenuItemsByConfig($event$config);
  57.     }
  58.     /**
  59.      * Add menu items by config
  60.      *
  61.      * @param KnpMenuEvent $event
  62.      * @param array $config
  63.      */
  64.     public function addMenuItemsByConfig(KnpMenuEvent $event, array $config)
  65.     {
  66.         $menu $event->getMenu();
  67.         foreach ($config as $route => $item) {
  68.             if(strpos($route'divider') === 0) {
  69.                 $menu->addChild($route, ['label' => '<hr />'])->setExtra('safe_label'true);
  70.             } else if(strpos($route'menu-label') === 0) {
  71.                 $menu->addChild($route, ['label' => $item['label'], 'childOptions' => $event->getChildOptions()]);
  72.             } else {
  73.                 $menuItem $menu->addChild(
  74.                     $route,
  75.                     ['route' => $item['route'] ?? $route'routeParameters' => $item['routeParameters'] ?? [], 'label' => $item['label'], 'childOptions' => $event->getChildOptions()]
  76.                 );
  77.                 if(isset($item['icon'])){
  78.                     $menuItem->setLabelAttribute('icon'$item['icon']);
  79.                 }
  80.                 if(isset($item['badges'])){
  81.                     $menuItem->setExtra('badges'$item['badges']);
  82.                 }
  83.                 if(isset($item['badge'])){
  84.                     $menuItem->setExtra('badge'$item['badge']);
  85.                 }
  86.             }
  87.         }
  88.     }
  89. }