webman市场,应用插件安装和卸载的问题

saithink

问题描述

我这边创建插件,安装卸载的时候出现一个小小bug,具体情况如下;
1、通过命令创建

php webman app-plugin:create foo // 创建应用插件

2、创建的目录中,api/install.php
安装采取的读取key作为标识的方式添加菜单

public static function install($version)
    {
        // 导入菜单
        Menu::import(static::getMenus());
    }

卸载采取的是读取name作为标识的方式卸载菜单;

public static function uninstall($version)
    {
        // 删除菜单
        foreach (static::getMenus() as $menu) {
            Menu::delete($menu['name']);
        }
    }

而我查看 webman-admin 里面配置菜单都只用到了key这个标识;

    [
        'title' => '数据库',
        'key' => 'database',
        'icon' => 'layui-icon-template-1',
        'weight' => 1000,
        'type' => 0,
        'children' => [
            [
                'title' => '所有表',
                'key' => 'plugin\\admin\\app\\controller\\TableController',
                'href' => '/app/admin/table/index',
                'type' => 1,
                'weight' => 800,
            ]
        ]
    ],

那么我也按照这个规则,再我的menu里面添加菜单
然而安装的时候能够成功,卸载的时候就会失败,提示name找不到

我暂时的处理方式是 menu.php 里面 key和name都 作为相同内容的标识符进行; 还有一种方式是,修改创建应用插件的时候,进行key或者name统一

操作系统环境及workerman/webman等具体版本

"workerman/webman-framework": 1.4.3
"webman/admin": 0.6.0
"webman/console": 1.2

951 1 0
1个回答

walkor

你先本地

Menu::delete($menu['name']);

改成

Menu::delete($menu['key']);

吧,这个问题下个webman/console 版本修复

  • saithink 2023-02-23

    好的

  • walkor 2023-02-23

    发新版了,composer require webman/console ^1.2.25

  • saithink 2023-02-23

    效率真高,后面这个removeUnnecessaryMenus方法没有影响吧?

年代过于久远,无法发表回答
🔝