Networking\InitCmsBundle\Menu\AdminMenuBuilder::createAdminSideMenu PHP 메소드

createAdminSideMenu() 공개 메소드

Use service to create main admin navigation
public createAdminSideMenu ( array $menuGroups ) : Knp\Menu\ItemInterface
$menuGroups array
리턴 Knp\Menu\ItemInterface
    public function createAdminSideMenu(array $menuGroups)
    {
        $groups = $this->adminPool->getDashboardGroups();
        $adminMenu = $this->factory->createItem('admin_side_menu');
        if (!$this->authorizationChecker->isGranted('ROLE_SONATA_ADMIN')) {
            return $adminMenu;
        }
        $iconSize = 'large';
        $firstLevelClass = 'first-level';
        $largeMenu = $adminMenu->addChild('large', array('attributes' => array('class' => 'nav-custom')));
        $smallMenu = $adminMenu->addChild('small', array('attributes' => array('class' => 'nav-custom nav-custom-small', 'style' => 'margin-top: 50px;')));
        $largeMenu->addChild($this->translator->trans('admin.menu.dashboard', array(), 'PageAdmin'), array('uri' => $this->router->generate('sonata_admin_dashboard'), 'current' => $this->request->get('_sonata_admin') ? false : true, 'attributes' => array('class' => $firstLevelClass, 'icon' => 'glyphicon glyphicon-dashboard', 'icon_size' => 'glyphicon-' . $iconSize), 'linkAttributes' => array('class' => 'pull-left first-level-text')));
        $menu = $largeMenu;
        foreach ($menuGroups as $key => $item) {
            foreach ($item['items'] as $mainMenu) {
                if (array_key_exists($mainMenu, $groups)) {
                    $group = $groups[$mainMenu];
                    if (count($group['items']) > 0) {
                        $first = reset($group['items']);
                        if ($first instanceof AdminInterface && $first->hasRoute('list')) {
                            $current = false;
                            $icon = 'glyphicon-unchecked';
                            $iconType = 'glyphicon';
                            if ($this->request->get('_sonata_admin') == $first->getCode()) {
                                $current = true;
                            }
                            if (method_exists($first, 'getIcon')) {
                                $icon = $first->getIcon();
                            }
                            if (substr($icon, 0, '2') == 'fa') {
                                $iconType = 'fa';
                            }
                            $mainItem = $menu->addChild($this->translator->trans($group['label'], array(), $group['label_catalogue'] != 'SonataAdminBundle' ? $group['label_catalogue'] : $first->getTranslationDomain()), array('uri' => $first->generateUrl('list'), 'current' => $current, 'attributes' => array('class' => $firstLevelClass, 'icon' => sprintf('%s %s', $iconType, $icon), 'icon_size' => sprintf('%s-%s', $iconType, $iconSize)), 'linkAttributes' => array('class' => 'pull-left first-level-text')));
                            if (count($group['items']) > 1) {
                                foreach ($group['items'] as $subItem) {
                                    $current = false;
                                    if ($this->request->get('_sonata_admin') == $subItem->getCode()) {
                                        $current = true;
                                    }
                                    if ($subItem instanceof AdminInterface && $subItem->hasRoute('list')) {
                                        $mainItem->addChild($this->translator->trans($subItem->getLabel(), array(), $subItem->getTranslationDomain()), array('uri' => $subItem->generateUrl('list'), 'current' => $current, 'attributes' => array('class' => 'second-level', 'icon' => $icon, 'icon_size' => $iconSize)));
                                    }
                                }
                            }
                        }
                    }
                }
            }
            //
            $iconSize = 'small';
            $firstLevelClass = 'first-level-small';
            $this->showOnlyCurrentChildren($menu);
            $menu = $smallMenu;
        }
        return $adminMenu;
    }