<?php
namespace App\Menu;
use App\Entity\Core\Product;
use Knp\Menu\ItemInterface;
use Sylius\Bundle\AdminBundle\Event\ProductMenuBuilderEvent;
final class AdminProductFormMenuListener
{
public function addItems(ProductMenuBuilderEvent $event): void
{
$menu = $event->getMenu();
$product = $event->getProduct();
$this->clearMenu($menu);
$this->createTagMenu($menu);
$this->createProductFileMenu($menu);
if ($product->getType() === Product::CUSTOM) {
$this->createAttributeMenu($menu);
}
}
private function clearMenu(ItemInterface $menu): void
{
$menu
->removeChild('attributes')
->removeChild('associations')
;
}
private function createTagMenu(ItemInterface $menu)
{
$menu
->addChild('tag')
->setAttribute('template', 'app/Menu/Product/Tab/_tag.html.twig')
->setLabel('admin.product.menu.tag.label')
;
}
private function createProductFileMenu(ItemInterface $menu)
{
$menu
->addChild('productFile')
->setAttribute('template', 'app/Menu/Product/Tab/_product_file.html.twig')
->setLabel('admin.product.menu.product_file.label')
;
}
private function createAttributeMenu(ItemInterface $menu)
{
$menu
->addChild('attribute')
->setAttribute('template', 'app/Menu/Product/Tab/_product_attributes.html.twig')
->setLabel('admin.product.menu.attribute.label')
;
}
}