菜单管理
2026/10/26大约 1 分钟
菜单管理
菜单在 MenuController.php(前缀 /sys/menu)。既驱动基座后台的侧边栏/路由,也承载插件入口的落地。
能力
标准 CRUD + changeStatus,另有:
| 方法 | 作用 |
|---|---|
getMenuTree | 取整棵菜单树(管理、角色授权勾选用) |
pluginMenu | 插件相关菜单选项 |
菜单类型与字段
createArtdMenus()(app/functions.php)把菜单记录映射成前端路由,type 决定形态:
| type | 含义 | component |
|---|---|---|
1 | 目录(布局容器) | 基座菜单 /index/index;插件菜单 /manage/index |
2 | 页面菜单 | 记录里的 component |
4 | 外链/iframe | /outside/Iframe,meta.link 存目标地址 |
其它映射字段:is_iframe→meta.isIframe、is_cache→keepAlive、is_hide→isHide、is_fixed→fixedTab、is_full_page→isFullPage、app_name(归属插件)、code→路由 name。图标若是本地相对路径(如插件 logo /app/{name}/logo.png)会经 resolveMenuIcons() 补域名。
权限点
菜单同时是 RBAC 的授权单位:角色勾选可见菜单,页面内按钮再配 v-auth 的 slug(system:{module}:{action})。菜单改动要清 UserMenuCache、UserAuthCache、UserInfoCache,见缓存规范。
插件入口菜单
插件安装时在 install.sql 幂等插入顶级入口菜单:code 用保留前缀 app:entry:{name}、path 指向宿主路由 /plugin-app/{name}、component 为 plugin/app。app:entry: 前缀由 PluginRegistrar 保留,插件不得另占用。详见双入口、am_demo 走读。
