主题
Laravel 路由扩展
WARNING
该功能在核心包 catchadmin/pro
>= 0.5.4 版本提供
介绍
在后台开发中,处理表格(table
)是常见的任务。基本的单页表格通常包括列表、数据新增、数据编辑以及行删除这四个主要操作。为此,Laravel
提供了一个便捷的 resource
路由方法,可以一次性注册相关路由。例如,针对用户管理,我们可以这样定义路由:
php
// CatchAdmin 专业版采用 API 接口开发模式,使用 apiResource 注册路由
Route::apiResource('users', UsesController::class);
此方法自动生成符合 RESTful 规范的五条 API 路由:
GET
users
- 显示列表数据 ->index
方法POST
users
- 新增数据 ->store
方法PUT
users/{id}
- 更新数据 ->update
方法GET
users/{id}
- 请求单条数据 ->show
方法DELETE
users/{id}
- 删除数据 ->destroy
方法
这样的设计确实很方便,不过如果某个方法不再需要,比如我们不希望保留删除路由,该如何处理呢?这时可以通过 except
方法排除掉不需要的路由:
php
Route::apiResource('users', UsesController::class)->except(['destroy']);
后台管理系统中,数据导入导出是常见需求,传统做法需要手动添加额外路由:
php
Route::apiResource('users', UsesController::class)->except(['destroy']);
// 手动添加数据导入路由
Route::post('users/import', [UsesController::class, 'import']);
频繁修改路由文件确实不够高效,CatchAdmin 专业版提供了更智能的路由管理解决方案。
adminResource
CatchAdmin 专业版提供了 adminResource
方法来解决这个问题,它是对 Laravel apiResource
的智能化扩展。使用方式如下:
php
// 使用 adminResource 智能注册后台管理路由
Route::adminResource('users', UsesController::class);
使用 adminResource
后,除了标准的 RESTful 路由外,还自动注册以下后台管理专用路由:
PUT
users/enable/{id}
- 状态更改 ->enable
方法GET
export/users
- 导出数据 ->export
方法POST
import/users
- 导入数据 ->import
方法PUT
users/restore/{id}
- 恢复数据 ->restore
方法GET
form/users
- 动态表单 ->form
方法GET
table/users
- 动态表格 ->table
方法
CatchAdmin 专业版还对路由注册机制进行了智能化优化。与 Laravel 原生 apiResource
不同,后者无论控制器是否包含对应方法都会注册全部五条路由。例如 UsesController
仅有 index
方法时,仍需要通过 except
方法手动排除不需要的路由。
adminResource
则采用智能检测机制:只有当控制器中存在对应的 public
方法时,才会注册相应路由。这种设计实现了真正的自动化路由管理,生成的路由表更加精简高效。
WARNING
生产环境部署时,建议执行 php artisan route:cache
命令缓存路由配置以提升性能。