Owl Admin 的 CRUD 功能基于 Laravel 的 Resource Controller 模式,采用分层架构设计:
核心特性:
框架在 Slowlyo\OwlAdmin\Controllers\AdminController 中实现了完整的 CRUD 方法:
| 方法 | HTTP 方法 | 路由模式 | 功能描述 | 返回内容 |
|---|---|---|---|---|
| index() | GET | /resource | 列表页面构建 & 数据获取 | 页面结构 或 列表数据 |
| create() | GET | /resource/create | 新增页面构建 | 新增页面结构 |
| store() | POST | /resource | 新增数据保存 | 操作结果响应 |
| show() | GET | /resource/{id} | 详情页面构建 & 数据获取 | 页面结构 或 详情数据 |
| edit() | GET | /resource/{id}/edit | 编辑页面构建 & 数据回显 | 页面结构 或 编辑数据 |
| update() | PUT/PATCH | /resource/{id} | 编辑数据保存 | 操作结果响应 |
| destroy() | DELETE | /resource/{id} | 删除数据 | 操作结果响应 |
控制器通过 _action 参数实现一个方法处理多种请求:
动作类型说明:
getData(GET)和 export(GET)在 index() 中处理quickEdit(POST)和 quickEditItem(POST)在 store() 中处理(表格内快速编辑)控制器需在子类中实现以下方法(约定实现,用于页面构建):
控制器通过 serviceName 属性自动注入对应的服务实例:
AdminService 提供了完整的数据操作方法:
| 方法分类 | 方法名称 | 功能描述 | 返回类型 |
|---|---|---|---|
| 查询 | list() | 获取分页列表数据 | array |
| listQuery() | 构建列表查询条件 | Builder | |
| getDetail($id) | 获取详情数据 | Model | |
| getEditData($id) | 获取编辑回显数据 | Model | |
| 操作 | store($data) | 新增数据 | bool |
| update($id, $data) | 更新数据 | bool | |
| delete($ids) | 删除数据 | mixed | |
| 钩子 | saving($data, $id) | 保存前钩子 | void |
| saved($model, $isEdit) | 保存后钩子 | void | |
| deleted($ids) | 删除后钩子 | void | |
| 辅助 | getCurrentModel() | 获取新增/修改成功后缓存的当前模型实例 | Model |
推荐通过“代码生成器”勾选“生成路由&菜单”,系统会写入 routes/admin.php 并自动刷新路由(命令:php artisan admin:gen-route)。
如需手动注册,可在 routes/admin.php 内添加 Resource 路由:
创建控制器 app/Admin/Controllers/BookController.php:
创建服务 app/Admin/Services/BookService.php:
创建模型 app/Models/Book.php:
在后台菜单管理中创建对应菜单项,设置路由为 /books。
框架提供了强大的代码生成器,可以自动生成完整的 CRUD 代码:
生成的文件包括:
routes/admin.php)使用代码生成器可以大大提高开发效率,生成后只需根据业务需求进行微调即可。
baseCRUD()、baseForm() 等基础方法