优先选用Gadmin或FastAdmin等TP官方生态后台脚手架,30分钟内可跑通完整后台——前提是环境干净、数据库就位、不违背默认约定。

直接说结论:不用从零写权限、菜单、CRUD,优先用 Gadmin 或 FastAdmin 这类 ThinkPHP 官方生态内建的后台脚手架,30 分钟内跑通完整后台是真实可行的——前提是环境干净、数据库已就位、不强行魔改默认约定。
为什么别手写 admin 模块
手写一个带登录、RBAC、菜单管理、基础 CRUD 的 admin 模块,表面看只是“多几个控制器”,实际会立刻撞上这些隐性成本:
- Session 校验逻辑散落在每个控制器里,漏加中间件就等于裸奔
- 菜单数据和权限节点要手动维护 SQL 或配置数组,改个字段名就得同步改模板、JS、后端验证
- 列表页的搜索、分页、导出 Excel 这些功能,每张表都得重写一遍相似代码
- TP6 的
controller_suffix、default_module、deny_module_list等配置项一旦和脚手架默认值冲突,Template not found错误会反复出现,且报错位置不直观
选 Gadmin 还是 FastAdmin
两者都基于 ThinkPHP,但定位和使用节奏不同:
-
Gadmin更轻量,适合已有 TP 项目想快速嵌入后台能力。它不强制替换你的路由结构,通过 Composer 加载后,用php think gadmin:install命令即可初始化权限表和默认菜单,适合对现有架构侵入性敏感的场景 -
FastAdmin是完整项目骨架,自带 Bootstrap UI 和命令行生成器php think crud。如果你从零开始,且接受它的目录结构(比如public下放前端资源、application被替换成app),生成一张用户表的全套后台代码只需 10 秒 - 注意:FastAdmin 默认用 TP5.1,虽支持 TP6,但部分插件(如附件上传组件)在 TP6 下需手动适配;Gadmin 官方明确标注支持 TP6.0+,兼容性更稳
绕不开的三处手动配置
哪怕用了脚手架,这三项不核对清楚,后台一定起不来:
立即学习“PHP免费学习笔记(深入)”;
- 数据库前缀必须和
config/database.php中的'prefix' => 'fa_'(FastAdmin)或'prefix' => 'g_'(Gadmin)完全一致,否则auth_rule、auth_group这些核心表查不到数据,登录后空白页 -
.env文件里APP_DEBUG=true必须关掉,否则菜单编辑页会暴露原始 SQL,上线即高危 - Web 服务器 rewrite 规则必须启用。Nginx 需确认
location / { try_files $uri $uri/ /index.php?$query_string; }已配置;Apache 要确保.htaccess可读且AllowOverride All生效,否则所有后台路由 404
生成 CRUD 后别直接上线
php think crud --table=goods 这类命令生成的代码,只是起点,不是终点:
- 生成的验证规则在
validate/目录下,但require字段只校验非空,业务上的手机号格式、密码强度、重复用户名等,必须手动补全rule和message - 列表页的
search字段默认只支持 like 查询,如果需要按时间范围筛选或关联表字段搜索,得进生成的控制器里改$this->request->get()处理逻辑 - 删除操作默认是物理删除,没走软删除(
delete_time字段)。如果业务要求可恢复,得在模型里开启use SoftDelete,并在生成的控制器中把destroy方法改成delete
最常被忽略的是:脚手架生成的 JS 代码里,api.url 往往硬编码了 /admin/goods 这类路径,一旦你后期把模块名从 admin 改成 manage,前端请求全 404,而错误提示只显示 “Network Error”,不会告诉你哪行 JS 写死了路径。



















