Laravel如何为路由组添加名称前缀?解决路由无法识别问题
Laravel路由名称前缀配置问题
需求
为以下API路由的名称添加users.前缀,最终路由名称为users.create和users.index:
- GET /api/v1/users
- POST /api/v1/users(需通过
auth:sanctum中间件校验)
现有代码
api.php
Route::group(['prefix' => 'v1'], function() { require __DIR__ . '/v1/api/users.php'; });
原始v1/api/users.php
Route::middleware('auth:sanctum')->group(function () { Route::post('/users', function (Request $request) { return []; })->name('create'); }); Route::get('/users', function (Request $request) { return []; })->name('index');
尝试修改后的问题代码
尝试用路由组添加名称前缀,但Laravel无法识别这些路由:
Route::group(['name' => 'users.'], function() { Route::middleware('auth:sanctum')->group(function () { Route::post('/users', function (Request $request) { return $request->user(); })->name('delete'); Route::get('/users', function (Request $request) { return []; })->name('index'); });
解决方案
- 路由名称前缀的正确配置键是
as而非name:Laravel中设置路由组名称前缀需要使用as参数,不是name。 - 修正括号闭合问题:你的代码中存在路由组未闭合的情况,需要补全闭合括号。
修改后的v1/api/users.php代码如下:
Route::group(['as' => 'users.'], function() { Route::middleware('auth:sanctum')->group(function () { Route::post('/users', function (Request $request) { return $request->user(); })->name('create'); }); Route::get('/users', function (Request $request) { return []; })->name('index'); });
这样配置后,路由名称会自动带上users.前缀:
- POST路由名称为
users.create - GET路由名称为
users.index
注:你之前的代码里把POST路由的名称写成了delete,这里根据需求修正为create,如果确实需要delete可以自行调整。
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

