【发布时间】:2016-01-19 00:05:49
【问题描述】:
我正在为 Web 应用程序编写路由和控制器规则。在多条规则中,出现了一个问题,就是我需要同时匹配 GET 和 POST 动词,并发送给控制器,但是方法不同。
我考虑过为此使用Route::controller('tracking', 'TrackingController'),但它需要为每个内部路由使用不同的名称,而我想为两者指定一个名称。此外,我只看到有关用法的负面信息,这表明这不是一个好主意。
这是我目前拥有的:
Route::match(['get', 'post'], '/tracking', [
'as' => 'tracking',
'uses' => 'TrackingController@index'
]);
在实现这一点时,我发现我需要有两个控制器方法,index 和 track。如何有效地将GET 路由到index 和POST 到track,同时保持相同的控制器(TrackingController)和相同的名称(tracking)?
我考虑过使用两条单独的路线,例如Route::get 和 Route::post,但感觉不是很有说服力。
【问题讨论】:
-
实际上拥有
Route::get和Route::post是非常有说服力的方式,对于维护该应用程序的人来说非常易读且易于理解,因为它是自记录的。如果你真的想做一些事情,你可能会考虑路由分组,但你仍然会得到两条路由,get和post -
@GladToHelp 路由命名怎么样?当有两条相同的路线时,我应该只命名其中一个吗?毕竟只是为了反向路由。
-
我认为将它们都命名然后在整个项目中使用路由名称来生成链接总是好的,因为它使您的应用程序易于维护。想象一下,您想稍后更改 uri,如果您只需要在您的 routes.php 中进行更改而不是在整个项目中进行搜索,这将容易得多。
-
@GladToHelp Righto,我现在已经做到了,它似乎可以按我的意愿工作。我并没有真正认为命名它们会更容易。现在我将 GET
tracking和 POST 命名为tracking.track,这意味着我可以在以后需要时安全地更改它们。
标签: php laravel url-routing laravel-5.1 laravel-routing