/** * @param Page[] $pages * @param ItemInterface $menu * @return ItemInterface */ private function createNestedMenu(array $pages, ItemInterface $menu) { foreach ($pages as $page) { if ($page->getShowInMenu()) { $menuItem = $this->factory->createItem($page->getTitle(), ['route' => 'show_page', 'routeParameters' => ['slug' => $page->getSlug()]]); $children = $this->repository->getChildren($page, true); if (null !== $children) { $this->createNestedMenu($children, $menuItem); } $menu->addChild($menuItem); } } return $menu; }
private function rebuildSlugs(Page $page, NestedTreeRepository $repo, ObjectManager $em, $buildPages = false) { $pages = []; //$page->setSlug(null); //$em->persist($page); //$em->flush(); if ($buildPages) { $pages[] = ['id' => $page->getId(), 'editUrl' => $this->generateUrl('page_update', ['slug' => $page->getSlug()])]; } $childs = $repo->getChildren($page); foreach ($childs as $child) { $child->setSlug(null); $em->persist($child); $em->flush(); if ($buildPages) { $pages[] = ['id' => $child->getId(), 'editUrl' => $this->generateUrl('page_update', ['slug' => $child->getSlug()])]; } } return $pages; }