---
url: /docs/5.0/server/route.md
---
# Laravel 路由扩展

## 介绍

在后台开发中，处理表格（`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` 命令缓存路由配置以提升性能。
:::
