Laravelのルーティングは色々書き方がある

Author:

Laravelのroutes.phpはちょいと他のフレームワークと違う。
どんな風に違うのか軽く書いておきましょう。

一般的な使い方

Route::get('hello/', 'HelloController@index');

他のフレームワークでもお馴染み、コントローラーのメソッドに渡す方法です。

function直書き

Route::get('/func/', function() {
    return 'Hello World';
});

まるでjQueryみたいだけど、こんな書き方もできます。

Restfulその1

Route::controller('/hoge/', 'HogeController');

こう書くとぱっと見/hoge/でHogeControllerのindexメソッドが呼ばれそうですがLaravelは違う。
なんとGETで/hoge/indexにアクセスするとgetIndexという関数が、POSTで/hoge/indexにアクセスするとpostIndexという関数が呼ばれるのです。
びっくりですよね。

Restfulその2

Route::resource('/fuga/', 'FugaController');

こう書くとさらにびっくり。
GETやPOSTで叩いた時にindex、create、store、show、edit、update、destroyという関数がルーティングされるのです。
+——–+———-+——————+————–+———————————————+————+
| Domain | Method | URI | Name | Action | Middleware |
+——–+———-+——————+————–+———————————————+————+
| | GET|HEAD | / | | Closure | |
| | GET|HEAD | test | test.index | App\Http\Controllers\TestController@index | |
| | POST | test | test.store | App\Http\Controllers\TestController@store | |
| | GET|HEAD | test/create | test.create | App\Http\Controllers\TestController@create | |
| | DELETE | test/{test} | test.destroy | App\Http\Controllers\TestController@destroy | |
| | PATCH | test/{test} | | App\Http\Controllers\TestController@update | |
| | GET|HEAD | test/{test} | test.show | App\Http\Controllers\TestController@show | |
| | PUT | test/{test} | test.update | App\Http\Controllers\TestController@update | |
| | GET|HEAD | test/{test}/edit | test.edit | App\Http\Controllers\TestController@edit | |
+——–+———-+——————+————–+———————————————+————+
すごいですなあ。

Laravelの使い方とかのまとめ

Share on Facebook
Pocket