*/ class MenuEventSubscriber extends EntityManagerEventSubscriber { protected NodeFactory $nodeFactory; protected EntityManager $entityManager; public function __construct( NodeFactory $nodeFactory, NodeRepository $nodeRepository, EntityManager $entityManager ) { $this->nodeFactory = $nodeFactory; $this->nodeRepository = $nodeRepository; $this->entityManager = $entityManager; } public function support(EntityInterface $entity) { return $entity instanceof Menu; } public function onCreate(EntityManagerEvent $event) { if (!$this->support($event->getEntity())) { return; } $menu = $event->getEntity(); if (0 !== count($menu->getNodes())) { return; } $rootNode = $this->nodeFactory->create($menu); $childNode = $this->nodeFactory->create($menu); $childNode ->setParent($rootNode) ->setLabel('Premier élément') ; $menu->setRootNode($rootNode); $this->entityManager->create($rootNode); $this->entityManager->create($childNode); $this->entityManager->getEntityManager()->persist($menu); $this->entityManager->flush(); $this->nodeRepository->persistAsFirstChild($childNode, $rootNode); } public function onUpdate(EntityManagerEvent $event) { return $this->onCreate($event); } }