devilcius/admin-menu-bundle

扩展菜单,用于与 Symfony2 和 sonata-admin 一起使用

dev-master 2013-10-03 09:04 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:52:22 UTC


README

Build Status

此版本基于 AdminBundle 并扩展了 SonataAdminBundle。它提供了从其他包管理菜单的可能性。

请参阅 如何安装和配置

管理菜单

SonataAdminBundle 主菜单(所有 Admin 页面的顶部)是通过 Admin 对象列表生成的。

此包扩展了菜单,并允许通过服务容器进行修改。

管理员菜单是通过 KnpMenu 库生成的。默认情况下,它检索所有管理员组和标签“管理员”(类似于默认菜单渲染器)。

要修改管理员菜单,只需注册一个监听器

namespace devilcius\TestBundle\EventListener;


class MenuListener
{
    public function createMenu($event)
    {
        $menu = $event->getMenu();

        // create a new group
        $menu->addChild('Audit', array('translationDomain'=>'MyDomain'));

        // add a divider to System group
        $menu['Audit']->addDivider();
        // ad a nav header
        $menu['Audit']->addNavHeader('SubMenu');

        // add list child (with a route declared in routing.yml)
        $menu['Audit']->addChild('List', array('uri' => $this->router->generate('get_audit_list')));

    }
}

并在你的 services.yml 文件中声明监听器。

services:
    kernel.listener.admin_menu_listener:
        class: devilcius\TestBundle\EventListener\MenuListener
        tags:
            - { name: kernel.event_listener, event: admin.menu.create, method: createMenu }
        arguments: [@router]

此包使用自定义的 MenuItem 类 devilcius\AdminMenuBundle\Menu\MenuItem,该类扩展了 Knp\Menu\MenuItem。它添加了新的功能(分隔符、导航标题等)

在管理员菜单中使用的控制器必须扩展 AdminMenuController

use devilcius\AdminMenuBundle\Controller\AdminMenuController as Controller;
class AuditController extends Controller
{
[...]