public function visitMenuItem(MenuItem $item) { try { $request = $this->getClonedRequest($item->getUri()); $event = new GetResponseEvent($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST); $this->accessListener->handle($event); } catch (AccessDeniedException $e) { $item->setDisplay(false); } catch (AuthenticationCredentialsNotFoundException $e) { } }
/** * @param MenuItem $item * * @return bool */ protected function isItemAllowed(MenuItem $item) { return $item->getExtra('isAllowed') && !in_array($item->getUri(), $this->uris) && $item->getUri() !== '#' && $item->isDisplayed(); }
/** * Find an item in the menu based on its URI * * @param MenuItem $menuItem * @param $uri * @return MenuItem|null */ private function findItemBasedOnUri(MenuItem $menuItem, $uri) { if ($uri === $menuItem->getUri()) { return $menuItem; } if (!$menuItem->hasChildren()) { return null; } foreach ($menuItem->getChildren() as $child) { $item = $this->findItemBasedOnUri($child, $uri); if ($item !== null) { return $item; } } return null; }
public function testGetUri() { $this->addChildWithExternalUrl(); $this->assertNull($this->pt1->getUri()); $this->assertEquals('http://www.symfony-reloaded.org', $this->menu['child']->getUri()); }
/** * @param MenuItem $item */ public function addItem(MenuItem $item) { $this->menuRootItems[$item->getUri()] = $item; }
public function getUri() { if ($this->route) { list($route, $parameters) = $this->route; return $this->router->generate($route, $parameters); } return parent::getUri(); }