You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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');
});

解决方案

  1. 路由名称前缀的正确配置键是as而非name:Laravel中设置路由组名称前缀需要使用as参数,不是name。
  2. 修正括号闭合问题:你的代码中存在路由组未闭合的情况,需要补全闭合括号。

修改后的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:00:26