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) {
     }
 }
예제 #2
0
 /**
  * @param MenuItem $item
  *
  * @return bool
  */
 protected function isItemAllowed(MenuItem $item)
 {
     return $item->getExtra('isAllowed') && !in_array($item->getUri(), $this->uris) && $item->getUri() !== '#' && $item->isDisplayed();
 }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
 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;
 }
예제 #6
0
 public function getUri()
 {
     if ($this->route) {
         list($route, $parameters) = $this->route;
         return $this->router->generate($route, $parameters);
     }
     return parent::getUri();
 }