FluidTYPO3\Vhs\ViewHelpers\Menu\AbstractMenuViewHelper::autoRender PHP Method

autoRender() protected method

protected autoRender ( array $menu, integer $level = 1 ) : string
$menu array
$level integer
return string
    protected function autoRender(array $menu, $level = 1)
    {
        $tagName = $this->arguments['tagNameChildren'];
        $this->tag->setTagName($this->getWrappingTagName());
        $html = [];
        $levels = (int) $this->arguments['levels'];
        $showCurrent = (bool) $this->arguments['showCurrent'];
        $expandAll = (bool) $this->arguments['expandAll'];
        $itemsRendered = 0;
        $numberOfItems = count($menu);
        foreach ($menu as $page) {
            if ($page['current'] && !$showCurrent) {
                continue;
            }
            $class = trim($page['class']) !== '' ? ' class="' . trim($page['class']) . '"' : '';
            $elementId = $this->arguments['substElementUid'] ? ' id="elem_' . $page['uid'] . '"' : '';
            if (!$this->isNonWrappingMode()) {
                $html[] = '<' . $tagName . $elementId . $class . '>';
            }
            $html[] = $this->renderItemLink($page);
            if (($page['active'] || $expandAll) && $page['hasSubPages'] && $level < $levels) {
                $subPages = $this->getMenu($page['uid']);
                $subMenu = $this->parseMenu($subPages);
                if (0 < count($subMenu)) {
                    $renderedSubMenu = $this->autoRender($subMenu, $level + 1);
                    $parentTagId = $this->tag->getAttribute('id');
                    if (!empty($parentTagId)) {
                        $this->tag->addAttribute('id', $parentTagId . '-lvl-' . $level);
                    }
                    $this->tag->setTagName($this->getWrappingTagName());
                    $this->tag->setContent($renderedSubMenu);
                    $this->tag->addAttribute('class', (!empty($this->arguments['class']) ? $this->arguments['class'] . ' lvl-' : 'lvl-') . $level);
                    $html[] = $this->tag->render();
                    $this->tag->addAttribute('class', $this->arguments['class']);
                    if (!empty($parentTagId)) {
                        $this->tag->addAttribute('id', $parentTagId);
                    }
                }
            }
            if (false === $this->isNonWrappingMode()) {
                $html[] = '</' . $tagName . '>';
            }
            $itemsRendered++;
            if (true === isset($this->arguments['divider']) && $itemsRendered < $numberOfItems) {
                $divider = $this->arguments['divider'];
                if (!$this->isNonWrappingMode()) {
                    $html[] = '<' . $tagName . '>' . $divider . '</' . $tagName . '>';
                } else {
                    $html[] = $divider;
                }
            }
        }
        return implode(LF, $html);
    }