腾讯云优惠券

呆错后台管理框架后台菜单列表如何扩展?

人气:798 更新:2022-02-14
呆错1.9.16版本起建议通过后台的菜单管理界面添加或者使用后台菜单组件接口添加到数据库。

在基于呆错后台管理框架开发插件的管理面板时是继承的后台基类模板,所以我们只需要修改其后台的菜单配置 admin_menu 即可,一共有5个参数(如下),一般是修改或者覆盖其配置值,在这里我们以这里介绍两种方法修改后台的菜单配置。

  • admin_menu.addon 插件列表(多级数组),插件的管理菜单添加到此处。
  • admin_menu.top 顶部菜单(二级数组)
  • admin_menu.config 左侧配置(二级数组)
  • admin_menu.apply 左侧应用(二级数组)
  • admin_menu.system 左侧系统(二级数组)

添加一级菜单列表(方法一):在插件的配置文件里直接追加config('admin_menu.addon')的值,以apps/index/config.php为例。

DcConfigMerge('admin_menu.addon', [
    [
        'menu_ico'    => 'fa-link',
        'menu_title'  => '一级菜单',
        'menu_module' => 'index',
        'menu_items'  => [
            [
                'ico'      => 'fa-list',
                'title'    => '二级菜单',
                'module'   => 'index',
                'controll' => 'admin',
                'action'   => 'index',
                'order'    => 11,
                'url'      => DcUrlAddon( ['module'=>'index','controll'=>'admin','action'=>'index'] ),
            ]
        ]
    ]
]);

添加一级菜单列表(方法二):通过预留的后台初始化钩子hook_admin_init动态改变其config('admin_menu.addon')的值,以apps/index/behavior/Hook.php为例。

public function hookAdminInit(&$params)
{
    $menuAddon = config('admin_menu.addon');
    if(!is_array($menuAddon)){
        $menuAddon = [];
    }
    //头部插入
    array_unshift($menuAddon,[
        'menu_ico'    => 'fa-link',
        'menu_title'  => '一级菜单',
        'menu_module' => 'index',
        'menu_items'  => [
            [
                'ico'      => 'fa-list',
                'title'    => '二级菜单',
                'module'   => 'index',
                'controll' => 'admin',
                'action'   => 'index',
                'order'    => 1,
                'url'      => DcUrlAddon( ['module'=>'index','controll'=>'admin','action'=>'index'] ),
            ],
        ]
    ]);

    config('admin_menu.addon',$menuAddon);

    unset($menuAddon);
}

重置左侧系统菜单列表的实例(删除两个初始列表)

$reset = false;
$menuSystem = config('admin_menu.system');
foreach($menuSystem as $key=>$value){
    if(in_array($value['title'],['admin/category/index','admin/tag/index'])){
        $reset = true;
        unset($menuSystem[$key]);
    }
}
if($reset){
    config('admin_menu.system',$menuSystem);
}
unset($menuSystem);