我正在为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
,但这并不是很有说服力。
答案 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';
});