public function render(ItemInterface $item, array $options = array()) { $options = array_merge(array('currentClass' => 'active'), $options); if ($item->isRoot()) { $item->setChildrenAttribute('class', trim('nav navbar-nav ' . $item->getChildrenAttribute('class'))); } return parent::render($item, $options); }
/** * @param ContentEntity $contentEntity * @param array $options * @return string */ public function render($contentEntity, $options = array()) { $contentMenuItems = $this->cq()->getContentMenuItems($contentEntity); /** * @var \Knp\Menu\MenuItem $rootMenu * @var \Knp\Menu\MenuItem $menu * */ $menu = array(); $rootMenu = $options['factory']->createItem($contentEntity->getSlug()); $rootMenu->setChildrenAttribute('id', $options['id']); $rootMenu->setChildrenAttribute('class', $options['class']); $menu[$contentEntity->getId()] = $rootMenu; /** * @var ContentEntity $content */ foreach ($contentMenuItems as $content) { $menu[$content->getId()] = $menu[$content->getTreeParent()->getId()]->addChild($content->getSlug(), array('uri' => '#')); if (isset($options['emptyTitle']) && $options['emptyTitle'] === true) { $menu[$content->getId()]->setLabel(''); } else { $menu[$content->getId()]->setLabel($content->getTitle()); } $contentMeta = $this->cm()->getContentAllMeta($content); if (isset($contentMeta['linkType']) && $contentMeta['linkType'] == 'route') { if (isset($contentMeta['linkRoute']) && !empty($contentMeta['linkRoute'])) { $linkURL = $this->tp()->getCurrentSkin()->getNavigationRoute($contentMeta['linkRoute']); $menu[$content->getId()]->setUri($linkURL); } } if (isset($contentMeta['linkType']) && $contentMeta['linkType'] == 'link') { if (isset($contentMeta['linkExternal']) && !empty($contentMeta['linkExternal'])) { $menu[$content->getId()]->setUri($contentMeta['linkExternal']); } } if (isset($contentMeta['linkType']) && $contentMeta['linkType'] == 'content') { if (isset($contentMeta['linkContent']) && $contentMeta['linkContent'] instanceof ContentEntity) { $contentLinkURL = $this->cq()->getPublicURL($contentMeta['linkContent']); $menu[$content->getId()]->setUri($contentLinkURL); } } if (isset($contentMeta['linkTarget']) && !empty($contentMeta['linkTarget'])) { $menu[$content->getId()]->setLinkAttribute('target', $contentMeta['linkTarget']); } if (isset($contentMeta['linkClass']) && !empty($contentMeta['linkClass'])) { $menu[$content->getId()]->setLinkAttribute('class', $contentMeta['linkClass']); } } $requestURL = $this->getRequest()->getRequestUri(); $menuTemplate = $this->getContentTemplate($contentEntity); $matcher = new Matcher(); $voter = new UriVoter($requestURL); $matcher->addVoter($voter); $renderer = new TwigRenderer($options['environment'], $menuTemplate, $matcher); return $renderer->render($menu[$contentEntity->getId()]); }