【问题标题】:Laravel resource route parameters not overridingLaravel 资源路由参数未覆盖
【发布时间】:2021-05-24 18:53:28
【问题描述】:

我正在构建一个 Laravel 8 api。我正在尝试为/api/access-type/{access_type} 设置表演路线。我想将{access_type} 更改为{id}

这是路由定义:

Route::middleware(['auth:api'])->group(function () {

    /////////// not allowed to use these. Creating/deleting these resources would require code changes
    Route::apiResource(
        \App\Http\Controllers\AccessTypeController::$uri,
        'AccessTypeController'
    )->only(['index', 'show'])->parameters(['access_type' => 'id']);
});

当我查看列出的路线时,我可以看到路线没有改变:

GET|HEAD | api/access-types/{access_type} | access-types.show | App\Http\Controllers\AccessTypeController@show | Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful | Illuminate\Routing\Middleware\ThrottleRequests:api | Illuminate\Routing\Middleware\SubstituteBindings | App\Http\Middleware\Authenticate:api

如果我使用邮递员访问/api/access-types/3,我可以看到没有$request->id 变量,但是有一个$request->access_type 变量,所以覆盖不起作用。我究竟做错了什么?这应该根据:docs

【问题讨论】:

  • 你可以试试['access_types' => 'id']
  • 嗨@Remul,运气不好

标签: laravel routes laravel-8


【解决方案1】:

我用以下方法修复了它:

Route::apiResource(
    \App\Http\Controllers\AccessTypeController::$uri,
    'AccessTypeController'
)->parameters(['access-types' => 'id']);

参数必须与我设置的 uri 相匹配。我想这是为了让您可以将多个不同的资源路由组合为一个。

【讨论】:

    猜你喜欢
    • 2018-04-07
    • 2016-09-21
    • 1970-01-01
    • 2015-11-23
    • 2017-01-17
    • 2015-10-25
    • 2015-01-11
    • 2018-01-06
    • 2019-02-20
    相关资源
    最近更新 更多