【问题标题】:How to change name of Nested Resource Route in Laravel?如何更改 Laravel 中嵌套资源路由的名称?
【发布时间】:2020-09-29 22:24:15
【问题描述】:

我的问题是当我像这样更改资源名称时:

Route::resource('photos', 'Photos\PhotoController')->parameters(['photo' => 'photo_id']);

它可以工作并且默认的“photo”参数名称更改为“photo_id”。但是当我像这样使用嵌套资源路由时:

Route::resource('photos.captions', 'Photos\PhotoController')->parameters(['photo' => 'photo_id', 'caption' => 'caption_id']);

“caption”参数名称不会更改为“caption_id”。

有什么办法可以同时改变它们吗? 谢谢你:)

【问题讨论】:

标签: php laravel parameters routes resources


【解决方案1】:

以下应该有效:

Route::resource('photos.captions', 'Photos\PhotoController')
    ->parameters(['photos' => 'photo_id', 'captions' => 'caption_id']);

资源名称和参数名称必须匹配:

  • 资源:photos,参数:photos
  • 资源:captions,参数:captions

来自docs

默认情况下,Route::resource 会为你创建路由参数 基于资源“单一化”版本的资源路由 姓名。您可以通过使用轻松地在每个资源的基础上覆盖它 参数方法。传入参数方法的数组 应该是资源名称和参数名称的关联数组:

Route::resource('users', 'AdminUserController')->parameters([
    'users' => 'admin_user'
]);

上面的示例为资源的节目生成了以下 URI 路线:

/users/{admin_user}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    相关资源
    最近更新 更多