企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 如何新增一个模块 --- 1、fid `fid`是功能id的缩写。一个`fid`只要做到全局唯一即可,但是最好参考PSI现在的默认命名惯例。 `fid`的定义在:[/web/Application/Home/Common/FIdConst.class.php](https://gitee.com/crm8000/PSI/blob/master/web/Application/Home/Common/FIdConst.class.php) 2、主菜单 用户进入一个业务模块的操作入口是主菜单。 PSI的主菜单定义在数据库的表 `t_menu_item` 中,表结构的具体含义请参考 `/doc/02 表结构/表结构说明.xlsx`。 `t_menu_item`中的一条记录就对应一个菜单项,所以新加一个模块,就需要向`t_menu_item`中添加一条新记录。 3、权限 给表 `t_permission` 中新增一条记录,对应于通过菜单进入业务模块的权限。 如果页面里面的按钮也需要权限控制,有几个权限项就再定义几个fid,并向表 `t_permission` 里面新增对应的记录。 4、编写业务模块Controller Controller需要从PSIBaseController继承。 业务模块的入口页面通常的action就用index()。 下图是PermissionController的index()的方法。 ![](https://box.kancloud.cn/8fd8c07bc3f1099ef42d62a8c1c29a6e_1095x458.jpg) >关键技术点: > >1. 用UserService的方法hasPermission来判断是否有权限 > >2. 如果没有权限用$this->gotoLoginPage来跳转页面 > >3. 用$this->initVar()初始化默认变量值 > > 这是标准的ThinkPHP 3.2的Controller开发内容,请参考[`ThinkPHP 3.2开发文档`](https://www.kancloud.cn/manual/thinkphp/1712)。 5、编写业务模块View 业务模块的入口页面通常的action就用index(),对应的View就是index.html 这是标准的ThinkPHP 3.2的View开发内容,请参考[`ThinkPHP 3.2开发文档`](https://www.kancloud.cn/manual/thinkphp/1785)。 6、修改MainMenuController的代码 MainMenuController 位于 [`/web/Application/Home/Controller/MainMenuController.class.php`](https://gitee.com/crm8000/PSI/blob/master/web/Application/Home/Controller/MainMenuController.class.php) 在MainMenuController的方法 `navigateTo` 中增加相应的跳转代码。