本文目录导读:

- 第一步:选择技术栈(关键决策)
- 第二步:项目搭建(以 Laravel + Filament 为例)
- 第三步:核心业务开发流程
- 第四步:权限与角色(RBAC)
- 第五步:前端与UI美化
- 第六步:部署与优化
- 总结:完整的目录结构(Laravel + Filament)
- 建议与避坑
搭建一个PHP后台管理系统,通常涉及以下几个核心步骤:框架选择、目录结构设计、权限控制、数据库设计以及前端界面集成。
下面是一个标准且高效的搭建流程,适用于从零开始或参考架构:
第一步:选择技术栈(关键决策)
不建议完全手写(原生PHP),效率低且难以维护,推荐以下两种主流方案:
| 方案类型 | 推荐框架/工具 | 适用场景 | 难度 |
|---|---|---|---|
| 快速开发(推荐) | Laravel + Filament / Laravel + Nova | 企业级、功能复杂、团队协作 | 中 |
| 轻量级/学习 | ThinkPHP + Layui / ThinkPHP + Vue | 中小型项目、个人项目 | 低 |
| 前后端分离 | Laravel + Vue/React + API | 重度交互、多端(App/小程序) | 高 |
新手推荐: Laravel(后端) + Filament(后台UI框架)是目前最快速的方案,Filament自带表单、表格、权限管理,几乎不用写前端代码。
第二步:项目搭建(以 Laravel + Filament 为例)
环境准备
- 必需: PHP >= 8.1, Composer, MySQL/PostgreSQL, Node.js (用于编译前端)
- 推荐工具: Laragon / Docker / XAMPP
创建项目
composer create-project laravel/laravel admin-panel cd admin-panel
安装 Filament 后台框架
composer require filament/filament:"^3.2" -W php artisan filament:install --panels
创建后台用户(管理员)
php artisan make:filament-user # 按提示输入 姓名、邮箱、密码(如 admin@admin.com / password)
启动项目
php artisan serve
访问 http://127.0.0.1:8000/admin 即可看到登录页面,用刚才创建的账号登录。
第三步:核心业务开发流程
以下是一个典型的 “用户管理”模块 示例:
创建模型与数据库迁移
php artisan make:model User -m
在生成的 database/migrations/ 文件中,添加字段:
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
执行迁移:
php artisan migrate
创建资源(CRUD)
Filament 会自动生成代码来管理这个模型:
php artisan make:filament-resource User
这个命令会生成:
app/Filament/Resources/UserResource.php(控制器逻辑)app/Filament/Resources/UserResource/Pages/(列表、创建、编辑页面)- 表单和表格的配置
配置表单与表格(在 UserResource 中)
修改 UserResource.php:
// 定义表单字段
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required(),
TextInput::make('email')->email()->required(),
DateTimePicker::make('email_verified_at'),
TextInput::make('password')
->password()
->required(fn (string $context): bool => $context === 'create')
->dehydrated(fn ($state) => filled($state)),
]);
}
// 定义表格列
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name'),
TextColumn::make('email'),
TextColumn::make('created_at')->dateTime(),
])
->filters([
// 可添加筛选器
])
->actions([
Tables\Actions\EditAction::make(),
]);
}
刷新后台页面,你会立即看到一个可用的 用户管理界面,包含筛选、排序、编辑、删除、批量操作等所有常见功能。
第四步:权限与角色(RBAC)
任何后台管理系统都需要权限控制,Filament 提供了 Shield 插件或你可以使用 Spatie Laravel Permission。
安装 Spatie Permission:
composer require spatie/laravel-permission php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" php artisan migrate
在 User 模型中添加 Trait:
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// ...
}
创建角色并分配:
你可以通过 Filament 的 Seeder 或在 Tinker 中执行:
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
// 创建权限
Permission::create(['name' => 'edit articles']);
// 创建角色并分配权限
$role = Role::create(['name' => 'admin']);
$role->givePermissionTo('edit articles');
在 Filament 中集成权限检查:
// 在 UserResource 中
public static function canViewAny(): bool
{
return auth()->user()->can('view users'); // 自定义权限
}
第五步:前端与UI美化
Filament 默认使用 Tailwind CSS 和 Alpine.js,界面现代且响应式,如果你需要更复杂的图表、仪表盘:
-
安装 Dashboard 模块:
php artisan make:filament-widget StatsOverview
然后配置
StatsOverview.php显示总用户数、今日注册数等。 -
自定义主题颜色: 修改
config/filament.php中的colors数组。
第六步:部署与优化
- 环境配置:确保
.env中的APP_ENV=production,APP_DEBUG=false。 - 缓存优化:
php artisan config:cache php artisan route:cache php artisan view:cache
- 队列任务:如果发送邮件或其他耗时操作,配置
QUEUE_CONNECTION=database并启动队列。 - Nginx 配置:将域名指向
public/目录。
完整的目录结构(Laravel + Filament)
admin-panel/
├── app/
│ ├── Filament/ # 后台资源文件(核心)
│ │ ├── Resources/
│ │ └── Pages/
│ ├── Models/ # 数据模型
│ └── Http/Controllers/ # 非后台API
├── database/
│ ├── migrations/ # 数据库表结构
│ └── seeders/ # 初始数据(如管理员账号、角色)
├── resources/
│ └── views/ # 自定义视图(很少需要修改)
├── routes/
│ ├── web.php # 前台路由
│ └── api.php # API路由
├── config/
│ ├── filament.php # Filament配置
│ └── permission.php # 权限配置
└── public/
└── assets/ # 编译后的CSS/JS
建议与避坑
- 不要用原生写后台:除非你的需求只是几个静态页面,框架能帮你解决 80% 的安全问题(SQL注入、CSRF、XSS)。
- 首推 Laravel:生态最好,文档最全,遇到问题基本都有现成答案。
- 前端选择:如果团队没有前端,用 Filament 或 Layui;如果有前端且追求交互,选 Vue + API 模式。
- 版本控制:使用 Git,
.env不要上传。
按照这个流程,你可以在 半天内 搭建一个包含用户管理、权限控制、CRUD操作的后台系统雏形,之后只需要根据业务需求不断增加 Resource 即可。