更新规则文档

This commit is contained in:
2026-02-10 08:58:31 +08:00
parent af366d76b2
commit 7dac7f0995
2 changed files with 172 additions and 25 deletions

View File

@@ -669,6 +669,96 @@ return new class extends Migration
- 文件路径: `Modules/{ModuleName}/Database/seeders/`
#### 菜单权限节点 Seed 规范
在 Seeder 文件中创建菜单权限节点时,需要遵循以下规范:
**菜单结构规范:**
1. **顶级菜单**parent_id=0不需要 component 值
- 顶级菜单作为分组容器,不需要指定组件路径
- 示例:系统管理菜单
2. **只有最后一级的菜单**才需要 component 值
- 如果菜单没有子菜单,则需要指定 component
- 如果菜单有子菜单,则不需要指定 component
3. **非菜单类型**(如 button不需要 component 值
- 按钮权限只用于权限控制,不涉及页面路由
4. **所有页面组件的菜单**在前端处理时都拉平挂载在 Layouts 框架组件下
- 前端会将菜单数据转换为路由,所有页面路由都会挂载到 Layout 布局下
- 不需要在前端维护嵌套的路由结构
**Seeder 示例:**
```php
<?php
private function createPermissions(): void
{
$permissions = [
// 顶级菜单(无 component
[
'name' => '系统管理',
'code' => 'system',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system',
'component' => null, // 顶级菜单不需要 component
'meta' => json_encode([
'icon' => 'Setting',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 1,
'status' => 1,
],
// 最后一级菜单(有 component
[
'name' => '用户管理',
'code' => 'system.users',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/users',
'component' => 'system/users/index', // 最后一级菜单需要 component
'meta' => json_encode([
'icon' => 'User',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 1,
'status' => 1,
],
// 按钮权限(无 component
[
'name' => '查看用户',
'code' => 'system.users.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.users.index',
'component' => null, // 非菜单类型不需要 component
'meta' => null,
'sort' => 1,
'status' => 1,
],
];
foreach ($permissions as $permission) {
Permission::create($permission);
}
}
```
**重要说明:**
- `parent_id` 主要用于构建菜单树的层级关系(侧边栏显示)
- 路由层面不需要维护嵌套结构,所有页面路由都在同一层级
- `component` 值只需要在最后一级菜单(叶子节点)中设置
- 前端会根据 `type` 字段判断是否需要加载组件
## 认证与授权
### JWT 认证