我正在为一个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::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';
});