在Laravel中使用不同的控制器进行GET和POST,但使用相同的名称

时间:2015-10-20 10:57:47

标签: php laravel url-routing laravel-5.1 laravel-routing

我正在为Web应用程序编写路由和控制器规则。在许多规则中,出现了一个问题,即我需要匹配GET和POST动词,并将它们发送到控制器,但方法不同。

我考虑过使用Route::controller('tracking', 'TrackingController'),但是每个内部路由需要不同的名称,而我想为两者指定一个名称。此外,我只读了关于使用的否定性,暗示这不是一个好主意。

这是我目前所拥有的:

Route::match(['get', 'post'], '/tracking', [
    'as' => 'tracking',
    'uses' => 'TrackingController@index'
]);

在实现这一点时,我发现我需要有两个控制器方法indextrack。如何有效地将GET路由到indexPOSTtrack,同时保持相同的控制器(TrackingController)和相同的名称(tracking })?

我考虑使用两条不同的路线,例如Route::getRoute::post,但这并不是很有说服力。

1 个答案:

答案 0 :(得分:1)

您可以轻松使用Route Controller,就像这样

Route::controller('tracking', 'TrackingController')

在这里,如果你想在get和post中使用相同的方法,只需在方法中使用任何前缀,例如

//for both get and post
public function anyUrl();
//only get
public function getUrl();
//only post
public function postUrl();

或使用

Route::any('/url', function () {
return 'Hello World';
});