src/EventSubscriber/MenuBuilderSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. // src/EventSubscriber/MenuBuilderSubscriber.php
  3. namespace App\EventSubscriber;
  4. use KevinPapst\AdminLTEBundle\Event\SidebarMenuEvent;
  5. use KevinPapst\AdminLTEBundle\Model\MenuItemModel;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  8. class MenuBuilderSubscriber implements EventSubscriberInterface
  9. {
  10.     private $urlGenerator;
  11.     public function __construct(UrlGeneratorInterface $urlGenerator)
  12.     {
  13.         $this->urlGenerator $urlGenerator;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             SidebarMenuEvent::class => ['onSetupMenu'100],
  19.         ];
  20.     }
  21.     
  22.     /**
  23.      * Generate the main menu.
  24.      *
  25.      * @param SidebarMenuEvent $event
  26.      */
  27.     public function onSetupMenu(SidebarMenuEvent $event)
  28.     {
  29.         $logoutUrl $this->urlGenerator->generate('fos_user_security_logout');
  30.         $items = [];
  31.         
  32.         $dashboard = new MenuItemModel('dashboardId''Dashboard''dashboard', [], 'fas fa-tachometer-alt');
  33.         $stock = new MenuItemModel('stockId''Stock''stock', [], 'fas fa-boxes');
  34.         $proveedores = new MenuItemModel('proveedoresId''Proveedores''proveedores', [], 'fas fa-handshake');
  35.         $personal = new MenuItemModel('personalId''Personal''personal', [], 'fas fa-users');
  36.         $personal->addChild(new MenuItemModel('fihajeId''Fichaje''fichaje', [], 'fa-solid fa-clock'))
  37.         ->addChild(new MenuItemModel('personalId''Registro''personal', [], 'fa-solid fa-book'));
  38.         $estadisticas = new MenuItemModel('estadisticasId''Estadísticas''estadisticas', [], 'fas fa-chart-line');
  39.         $estadisticas->addChild(new MenuItemModel('comidaId''Estadística Comida''statscomida', [], 'fa-solid fa-chart-pie'))
  40.         ->addChild(new MenuItemModel('bebidaId''Estadística Bebida''statsbebida', [], 'fa-solid fa-chart-pie'))
  41.         ->addChild(new MenuItemModel('comensalesId''Estadística Comensales''statscomensales', [], 'fa-solid fa-chart-pie'));
  42.         $ventas = new MenuItemModel('ventasId''Ventas''ventas', [], 'fas fa-euro-sign');
  43.         $cocina = new MenuItemModel('cocinaId''Cocina''app_cocina', [], 'fas fa-fire-burner');
  44.         $mesas = new MenuItemModel('mesasId''Mesas''mesas', [], 'fas fa-utensils');
  45.         $caja = new MenuItemModel('cajaId''Caja''caja', [], 'fa-solid fa-cash-register');
  46.         $tienda = new MenuItemModel('tiendaId''Tienda''productostienda', [], 'fa-solid fa-cart-shopping');
  47.         $reservas = new MenuItemModel('reservasId''Reservas''reservas', [], 'fa-solid fa-calendar-days');
  48.         $facturas = new MenuItemModel('facturasId''Facturas''facturas', [], 'fa-solid fa-file-invoice-dollar');
  49.         $facturas->addChild(new MenuItemModel('facturasId''Facturas Recibidas''facturas', [], 'fa-solid fa-file-import'))
  50.         ->addChild(new MenuItemModel('tickettofacturaId''Facturas Emitidas''tickettofactura', [], 'fa-solid fa-file-export'));
  51.         $ajustes = new MenuItemModel('ajustesId''Ajustes''app_ajustes', [], 'fa-solid fa-gears');
  52.         $ajustes->addChild(new MenuItemModel('ajustesId''Gestión Usuarios''app_ajustes', [], 'fa-solid fa-user-group'))
  53.         ->addChild(new MenuItemModel('ajustesAvanzadosId''Ajustes Avanzados''ajustesavanzados', [], 'fa-solid fa-sliders'));
  54.         $logout = new MenuItemModel('logoutId''Logout'$logoutUrl, [], 'fas fa-sign-out-alt');
  55.         $items [] = $mesas;
  56.         $items [] = $caja;
  57.         // $items [] = $dashboard;
  58.         $items [] = $stock;
  59.         $items [] = $proveedores;
  60.         $items [] = $personal;
  61.         $items [] = $cocina;
  62.         $items [] = $estadisticas;
  63.         $items [] = $ventas;
  64.         $items [] = $reservas;
  65.         $items [] = $facturas;
  66.         // $items [] = $tienda;
  67.         $items [] = $ajustes;
  68.         $items [] = $logout;
  69.         foreach ($items as $item) {
  70.             $event->addItem($item);
  71.         }
  72.         
  73.         $this->activateByRoute(
  74.             $event->getRequest()->get('_route'),
  75.             $event->getItems()
  76.         );
  77.     }
  78.     /**
  79.      * @param string $route
  80.      * @param MenuItemModel[] $items
  81.      */
  82.     protected function activateByRoute($route$items)
  83.     {
  84.         foreach ($items as $item) {
  85.             if ($item->hasChildren()) {
  86.                 $this->activateByRoute($route$item->getChildren());
  87.             } elseif ($item->getRoute() == $route) {
  88.                 $item->setIsActive(true);
  89.             }
  90.         }
  91.     }
  92. }