ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 菜单 #### **框架标准菜单定义** 平台管理端菜单项 `app\dict\menu\admin.php ` 站点管理端菜单项 ` app\dict\menu\site.php ` niucloud-admin框架首次安装系统时,会自动加载上面的两个菜单字典到数据表中sys_menu表中。一定要注意。niucloud-admin框架的设计机制,切记!开发者不允许直接在sys_menu数据表中进行菜单项的操作,而必须在菜单字典中修改编辑。 **修改菜单注意事项** 1. 每次修改编辑了菜单字典,必须要刷新菜单缓存(开发工具\更新缓存\刷新菜单),才能更新到数据表sys_menu中 2. 插件开发时,有针对于菜单的处理,安装插件后一定要首先在站点套餐中勾选菜单项,界面才会生效 常常,我们开发了菜单功能,发现界面怎么都没有按照预定的想法变化,就是忽略了上面的步骤。 #### **插件中菜单定义** 插件中也可以自定义菜单项,niucloud-admin框架对于插件的约束是宽容的,插件可以对整个系统的菜单项进行操作。甚至可以操作标准菜单定义。插件中菜单项的定义位置与标准菜单项的定义方式几乎相同。<br> 例如在hello_world插件中,对于平台管理端、站点管理端的菜单项的定义位置在 平台管理端菜单项 `addon\hello_world\app\dict\menu\admin.php ` 站点管理端菜单项 ` addon\hello_world\app\dict\menu\site.php ` 插件安装时,这两个地方定义的菜单项的结构,框架会自动装载到菜单数据表sys_menu中 **注意!插件安装,卸载时,系统会自动装载,删除菜单,不需要开发者在插件的安装、卸载脚本中对于菜单做相关处理** ![](https://img.kancloud.cn/6c/72/6c722dd6f4e89a531dc56ffd53e8c368_423x459.png) ``` <?php return [ [ 'menu_name' => '插件站点菜单', 'menu_key' => 'niucloud_site_hello', 'menu_type' => 1, 'icon' => 'iconfont-iconyingyongshichang', 'api_url' => '', 'router_path' => 'hello_world', 'view_path' => 'hello_world/site', 'methods' => '', 'sort' => 90, 'status' => 1, 'is_show' => 1, ], /* [ 'menu_name' => '会员列表', 'menu_key' => 'member_list', 'parent_key' => 'member', 'menu_type' => 1, 'icon' => 'iconfont-iconhuiyuanliebiao', 'api_url' => 'member/member', 'router_path' => 'hello_world_member_list', 'view_path' => 'hello_world/member', 'methods' => 'get', 'sort' => 100, 'status' => 1, 'is_show' => 1, 'children' => [ ] ], "delete" => "member" //针对修改系统菜单处理方式,可以删除系统菜单,设置对应key值,也可删除不需要的菜单处理 */ ]; ``` menu_name 菜单的标题,出现在菜单项上的文字 menu_key 菜单的关键字,这个必须唯一,添加父子菜单,删除等操作键 menu_type 菜单类型,0表示目录 1表示菜单 2表示功能按钮 icon 菜单的图标 api_url 菜单对应的后台api接口地址,作用是控制api接口权限与菜单权限控制一致,并非实际调用URL router_path 路由地址,表示实际的菜单调用网址URL,菜单调用路由的开发,请参考相关开发说明 view_path view文件地址,表示实际前端view文件地址,一般的,路由地址与view文件地址不一致 methods 请求方法,与api_url 对应,包括GET, POST, PUT, DELETE sort 排序号,排序号越大,越靠前 status 状态,1表示启用,0表示禁用 (暂时没有作用) is_show 菜单是否可见 1表示可见 0表示隐藏 系统菜单的特殊处理 `delete => "member" 针对修改系统菜单处理方式,可以删除系统菜单,设置对应key值,也可删除不需要的菜单处理, 这个只是插件菜单的处理方式。用于删除系统菜单(sys_menu表中软删除)。 ` 通过上面的方式,插件中可以针对框架的某个菜单项进行软删除,替换菜单功能为自己的功能。 例如,我们开发一个软件,发现框架本身的会员列表不符合要求,我们不应该直接修改框架的会员列表功能,而应该软删除框架自带的会员列表菜单,然后全新开发一套会员列表功能。新建会员列表菜单路由到自己开发的会员列表功能。 这样的好处是,框架进行升级时,可以完全兼容升级。