怪异路线模型绑定

时间:2019-04-25 13:02:41

标签: laravel-5 routes

我在使用一个特定名称(“总部”)的路由中遇到了这个问题:“显示”路由的id参数为复数形式,但通常为单数形式。

如果我写:

Route::resource('quarters', 'HeadquartersController');  

执行此命令行:

php artisan route:list

我按预期获得了单数形式的参数:

Route::get('/quarters/{quarter}', 'HeadquartersController@show');

但是如果我写:

Route::resource('headquarters', 'HeadquartersController'); 

执行此命令行:

php artisan route:list

我得到复数形式的参数:

Route::get('/headquarters/{headquarters}', 'HeadquartersController@show');

我解决了这个问题

Route::resource('headquarters', 'HeadquartersController')->parameters([
'headquarters' => 'headquarter' 
]); 

但是我想了解这种行为,有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

在后台,Laravel仅使用其自己的帮助器Str :: singular。 https://laravel.com/docs/5.8/helpers#method-str-singular

这并不完美,并且有一些例外。您可以在这里阅读它们: https://stillat.com/blog/2017/12/06/laravel-5-string-helpers-getting-the-singular-form-of-a-string-value

  

特殊情况

     

以下任何单词或单词结尾   表将不受单一方法的影响。这是   因为生成的单词已经是单数,或者因为没有   拐点可用。单词结尾以前缀*:

表示      

下表列出了不被翻译的词   奇异方法。这是因为生成的单词已经   单数,或者因为没有可用的明确的变形规则,或者   他们分开处理(请参阅特殊情况表)。

     

Amoyese野牛Borghese鲷马裤马裤Cantus   鲤鱼底盘快船代号caoitus刚果contretemps corps   数据碎片糖尿病djn eland麋鹿设备法罗语   比目鱼福州家具绞刑架   日内瓦热那亚人Glibertese涂鸦   总部疱疹狂犬病Hottentotese   信息局jackanapes Kiplingese   刚果人Lucchese行李鲭鱼马耳他语*媒体喵喵麋   腮腺炎南京新闻纽西斯北京体育北京山麓钳   Postoiese钳子葡萄牙程序狂犬病大米犀牛三文鱼   砂捞越剪刀海鲈鱼海鲈系列剃须剪西门子   种类职员猪睾丸裤鳟鱼金枪鱼佛蒙特州   威科努斯人争夺牛羚扬格人