src/App/Menu/AdminProductFormMenuListener.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Menu;
  3. use App\Entity\Core\Product;
  4. use Knp\Menu\ItemInterface;
  5. use Sylius\Bundle\AdminBundle\Event\ProductMenuBuilderEvent;
  6. final class AdminProductFormMenuListener
  7. {
  8.     public function addItems(ProductMenuBuilderEvent $event): void
  9.     {
  10.         $menu $event->getMenu();
  11.         $product $event->getProduct();
  12.         $this->clearMenu($menu);
  13.         $this->createTagMenu($menu);
  14.         $this->createProductFileMenu($menu);
  15.         if ($product->getType() === Product::CUSTOM) {
  16.             $this->createAttributeMenu($menu);
  17.         }
  18.     }
  19.     private function clearMenu(ItemInterface $menu): void
  20.     {
  21.         $menu
  22.             ->removeChild('attributes')
  23.             ->removeChild('associations')
  24.         ;
  25.     }
  26.     private function createTagMenu(ItemInterface $menu)
  27.     {
  28.         $menu
  29.             ->addChild('tag')
  30.             ->setAttribute('template''app/Menu/Product/Tab/_tag.html.twig')
  31.             ->setLabel('admin.product.menu.tag.label')
  32.         ;
  33.     }
  34.     private function createProductFileMenu(ItemInterface $menu)
  35.     {
  36.         $menu
  37.             ->addChild('productFile')
  38.             ->setAttribute('template''app/Menu/Product/Tab/_product_file.html.twig')
  39.             ->setLabel('admin.product.menu.product_file.label')
  40.         ;
  41.     }
  42.     private function createAttributeMenu(ItemInterface $menu)
  43.     {
  44.         $menu
  45.             ->addChild('attribute')
  46.             ->setAttribute('template''app/Menu/Product/Tab/_product_attributes.html.twig')
  47.             ->setLabel('admin.product.menu.attribute.label')
  48.         ;
  49.     }
  50. }