为什么限制更新的Laravel资源控制器会生成两条路由?

时间:2015-12-30 10:11:01

标签: php laravel laravel-5 laravel-5.1

routes.php中给出以下定义的路线:

Route::resource('smoker','SmokerController',['only' => ['update']]);

..导致产生两条不同的路线:

| PUT   | profile/smoker/{smoker}| profile.smoker.update | App\Http\Controllers\Profile\SmokerController@update |
| PATCH | profile/smoker/{smoker}|                       | App\Http\Controllers\Profile\SmokerController@update |

我可以猜测PUTPATCH动词在一个宁静的环境中足够接近它们都属于“更新”状态。限制。我无法找到支持该猜测的任何文档,也无法在任何地方找到文档,为什么一个(PUT)的别名会自动设置为profile.smoker.update

更令人困惑的是,类似的限制,'显示'会导致动词GETHEAD合并为路由列表中的GET|HEAD

| GET|HEAD | profile/smoker/{smoker}| profile.smoker.show | App\Http\Controllers\Profile\SmokerController@show |

为什么GETHEAD合并,但PUTPATCH不合并?

1 个答案:

答案 0 :(得分:2)

RFC定义了PUT与PATCH之间的差异,并且有关于此的信息。一个例子是评论中链接的答案(example)。但是,对于Laravel框架,确实没有区别。

关于你的第二个问题,为什么PUT和PATCH没有在路线中合并,这实际上只是一个疏忽。根据{{​​3}},Laravel 5.2中已经纠正了这种疏忽。因此,从5.2开始,PUT和PATCH路由应该显示为合并,就像GET和HEAD路由一样。

相关问题