【问题标题】:Route::resource binding creates plural attribute routes (i.e. projects/{projects})Route::resource 绑定创建多个属性路由(即项目/{projects})
【发布时间】:2020-02-05 09:13:29
【问题描述】:

我正在尝试为系列设置Route:resource

  • 当我创建单独的获取、发布、修补和删除路由时,它按预期工作(例如 GET series/${serie})。

  • 但是,当我使用 Route::resource 时,它​​会创建多个属性(例如 GET series/${series})。

  • 在我关注的 laracast 中,它创建了单数(例如 GET projects/${project})。

我无法弄清楚我错过了什么。

这行得通:

Route::get('/series', 'SeriesController@index');
Route::get('/series/create', 'SeriesController@create');
Route::get('/series/{serie}', 'SeriesController@show');
Route::post('/series', 'SeriesController@store');
Route::get('/series/{serie}/edit', 'SeriesController@edit');
Route::patch('/series/{serie}', 'SeriesController@update');
Route::delete('/series/{serie}', 'SeriesController@destroy');

路线列表为:

GET|HEAD | series                | App\Http\Controllers\SeriesController@index
POST     | series                | App\Http\Controllers\SeriesController@store
GET|HEAD | series/create         | App\Http\Controllers\SeriesController@create
GET|HEAD | series/{serie}        | App\Http\Controllers\SeriesController@show
PATCH    | series/{serie}        | App\Http\Controllers\SeriesController@update
DELETE   | series/{serie}        | App\Http\Controllers\SeriesController@destroy
GET|HEAD | series/{serie}/edit   | App\Http\Controllers\SeriesController@edit

这不起作用:

Route::resource('series', 'SeriesController');

并生成此路线列表:

GET|HEAD | series                | App\Http\Controllers\SeriesController@index
POST     | series                | App\Http\Controllers\SeriesController@store
GET|HEAD | series/create         | App\Http\Controllers\SeriesController@create
GET|HEAD | series/{series}       | App\Http\Controllers\SeriesController@show
PATCH    | series/{series}       | App\Http\Controllers\SeriesController@update
DELETE   | series/{series}       | App\Http\Controllers\SeriesController@destroy
GET|HEAD | series/{series}/edit  | App\Http\Controllers\SeriesController@edit

注意复数形式 {series}。为什么会这样?

【问题讨论】:

  • series这个词既是单数也是复数,所以serie是不正确的,我什至在字典里都找不到。见herehere
  • 如果你真的想要serie,你仍然可以通过laravel.com/docs/5.7/…进行更改

标签: laravel laravel-5 laravel-routing


【解决方案1】:

“系列”是单词的复数和单数,因此 Laravel 生成的路线非常好。

如果您查看 Laravel 的复数辅助函数,您甚至可以看到“系列”被明确列为不可数:https://github.com/laravel/framework/blob/5.5/src/Illuminate/Support/Pluralizer.php#L49

【讨论】:

  • 非常感谢。我知道“系列”是不可数的,但没想到框架足够聪明,可以知道这一点。感谢您分享 Pluralizer 的链接。
猜你喜欢
  • 2017-09-11
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 2011-10-17
  • 2015-07-12
  • 2018-02-17
  • 2021-08-21
  • 2021-11-24
相关资源
最近更新 更多