/** * Renders the link in a a tag with link attributes or * the label in a span tag with label attributes * * Tests if item has a an uri and if not tests if it's * the current item and if the text has to be rendered * as a link or not. * * @param \Knp\Menu\ItemInterface $item The item to render the link or label for * @param array $options The options to render the item * @return string */ public function renderLink(ItemInterface $item, array $options = array()) { $options = array_merge($this->getDefaultOptions(), $options); if ($item->getUri() && (!$item->isCurrent() || $options['currentAsLink'])) { $text = sprintf('<a href="%s"%s>%s</a>', $this->escape($item->getUri()), $this->renderHtmlAttributes($item->getLinkAttributes()), $this->escape($item->getLabel())); } else { $text = sprintf('<span%s>%s</span>', $this->renderHtmlAttributes($item->getLabelAttributes()), $this->escape($item->getLabel())); } return $this->format($text, 'link', $item->getLevel()); }
/** * @param \Knp\Menu\ItemInterface $item * @param array $options * @return Html */ protected function getLinkElement(ItemInterface $item, array $options) { return Html::el('a', $item->getLinkAttributes())->setHref($this->getUri($item, $options))->setHtml($this->getText($item, $options)); }
protected function renderLinkElement(ItemInterface $item, array $options) { return sprintf('<a href="%s"%s>%s</span></a>', $this->escape($item->getUri()), $this->renderHtmlAttributes($item->getLinkAttributes()), $this->renderLabel($item, $options)); }
protected function renderLinkElement(ItemInterface $item, array $options) { $class = (array) $item->getLinkAttribute('class'); $class[] = 'section'; $attributes = $item->getLinkAttributes(); $attributes['class'] = implode(' ', $class); return sprintf('<a href="%s"%s>%s</a>', $this->escape($item->getUri()), $this->renderHtmlAttributes($attributes), $this->renderLabel($item, $options)); }
/** * @param ItemInterface $item * @param integer|null $depth the depth until which children should be exported (null means unlimited) * * @return array */ public function toArray(ItemInterface $item, $depth = null) { $array = array('name' => $item->getName(), 'label' => $item->getLabel(), 'uri' => $item->getUri(), 'attributes' => $item->getAttributes(), 'labelAttributes' => $item->getLabelAttributes(), 'linkAttributes' => $item->getLinkAttributes(), 'childrenAttributes' => $item->getChildrenAttributes(), 'extras' => $item->getExtras(), 'display' => $item->isDisplayed(), 'displayChildren' => $item->getDisplayChildren(), 'current' => $item->isCurrent()); // export the children as well, unless explicitly disabled if (0 !== $depth) { $childDepth = null === $depth ? null : $depth - 1; $array['children'] = array(); foreach ($item->getChildren() as $key => $child) { $array['children'][$key] = $this->toArray($child, $childDepth); } } return $array; }
protected function renderLinkElement(ItemInterface $item, array $options) { $attributes = $item->getLinkAttributes(); $attributes['class'] = isset($attributes['class']) ? $attributes['class'] . ' item' : 'item'; if ($this->matcher->isCurrent($item)) { $attributes['class'] = $attributes['class'] . ' active'; } $position = $item->getExtra('position', 'left'); $link = sprintf('<a href="%s"%s>%s</a>', $this->escape($item->getUri()), $this->renderHtmlAttributes($attributes), $this->renderLabel($item, $options)); return $link; }