同じURLのルーティングをまとめる事ができるRoute::match
Route::get ('sample/aaa', 'HogeController@index')->name('hoge.index');
Route::post('sample/aaa', 'HogeController@index')->name('hoge.index');
このように、リクエストがget
なのかpost
なのか、が違うだけで2行書かなければいけないところをRoute::match
を使う事で、
Route::match(['get', 'post'], 'foo','HogeController@index')->name('hoge.index');
とまとめることができる。
getとpostで異なるアクションにしたい場合の使い方
Route::get ('sample/aaa', 'HogeController@index')->name('hoge.index');
Route::post('sample/aaa', 'HogeController@postIndex')->name('hoge.index');
このようなpostとgetで呼び出すアクションが異なる処理を
Route::match(['get', 'post'], 'foo','HogeController@index')->name('hoge.index');
このようにまとめてしまうと、当然アクションを分けることができません。
そのため以下のように、Controller内でリクエスト種別を判定して処理を分岐させる必要があります。
public function index(Request $request)
{
if ($request->method() == 'POST') //POSTだったら
{
return $this->postIndex($request); //postIndexへ
}
return view('hoge/index');
}
public function postIndex(Request $request)
{