Skip to content

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 命令缓存路由配置以提升性能。