protected function url(MenuItem $item, $type) { $route = $item->getRoute()->getRoute(); $parameters = []; /** @var MenuItemParameter $parameter */ foreach ($item->getParameters() as $parameter) { $key = $parameter->getParameter()->getParameter(); $parameters[$key] = $this->getValue($parameter); } return $this->router->generate($route, $parameters, $type); }
public function addItemAction(Menu $menu, $routeId, $parentId, Request $request) { $routeRepository = $this->container->get('wucdbm_menu_builder.repo.routes'); $route = $routeRepository->findOneById($routeId); $item = new MenuItem(); $item->setRoute($route); $item->setMenu($menu); $menu->addItem($item); if ($parentId) { $menuItemRepository = $this->container->get('wucdbm_menu_builder.repo.menus_items'); $parent = $menuItemRepository->findOneById($parentId); $item->setParent($parent); $parent->addChild($item); } return $this->editCreateItem($item, $this->generateUrl('wucdbm_menu_builder_client_menu_item_add', ['id' => $menu->getId(), 'routeId' => $routeId, 'parentId' => $parentId]), $request); }
public function save(MenuItem $item) { $em = $this->getEntityManager(); $conn = $em->getConnection(); $conn->beginTransaction(); try { foreach ($item->getParameters() as $parameter) { $em->persist($parameter); } $em->persist($item); $em->flush(); $conn->commit(); } catch (\Exception $e) { $conn->rollBack(); throw $e; } }