thinkphp路由分组通过 route::group() 方法实现,该方法接收一个名称、一组路由规则和一个配置数组。在配置数组中设置 middleware 键即可为整个分组添加中间件,所有该组内的路由都会自动应用这些中间件。

如何定义带前缀的路由分组?
定义带前缀的路由分组时,只需在 Route::group() 的第三个参数(配置数组)中指定 prefix 选项。例如,设置 prefix 为 api/,则组内所有路由 URL 都会自动加上这个前缀。

namespace app\route;
use think\facade\Route;
// 定义API分组,前缀为api/
Route::group('api', function () {
// 访问 /api/user/list
Route::get('user/list', 'api.User/list');
// 访问 /api/user/detail
Route::get('user/detail/:id', 'api.User/detail');
})->prefix('api/');
// 注册路由
return Route::load();
预期结果:访问 /api/user/list 将匹配到 api.User/list 控制器方法,访问 /api/user/detail/123 将匹配到 api.User/detail 并传入参数 id=123。
分组中间件如何生效?
分组中间件通过在 Route::group() 的配置数组中设置 middleware 键来生效。可以传入单个中间件类名、多个中间件的数组,或者使用别名。中间件将在请求进入组内任何路由之前执行。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。

namespace app\route;
use think\facade\Route;
// 定义认证分组,应用auth中间件
Route::group('admin', function () {
// 访问 /admin/dashboard
Route::get('dashboard', 'admin.Index/dashboard');
// 访问 /admin/settings
Route::get('settings', 'admin.Settings/index');
})->middleware('\app\middleware\Auth');
// 注册路由
return Route::load();
预期结果:当用户访问 /admin/dashboard 或 /admin/settings 时,\app\middleware\Auth 中间件会先执行。如果中间件判断未认证,可能会重定向到登录页或返回401错误,否则请求继续传递给对应的控制器方法。
如果分组内路由需要不同中间件怎么办?
如果分组内某些路由需要不同的中间件,可以在组内单独定义这些路由并为其指定特定的中间件。组级别的中间件仍然会先执行,然后才是路由级别的中间件。这种组合方式提供了灵活的权限控制。
namespace app\route;
use think\facade\Route;
Route::group('secure', function () {
// 这个路由除了组中间件外,还需要额外的验证中间件
Route::rule('profile/edit', 'secure.Profile/edit')->middleware('\app\middleware\ProfileValidator');
// 这个路由只应用组中间件
Route::get('profile/view', 'secure.Profile/view');
})->middleware('\app\middleware\Auth');
return Route::load();
预期结果:访问 /secure/profile/edit 时,会依次执行 Auth 和 ProfileValidator 两个中间件。而访问 /secure/profile/view 时,只执行 Auth 中间件。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










