ルーティング登録の基本
Laravelアプリがリクエストを受け取ってからどのような流れで処理が行われるのか、その中でweb.phpの働きがどういったものかがわかったところで、web.phpの具体的な書き方を紹介していきましょう。
ルーティング登録の基本はRoute::get()とコールバック関数
ここで、前回web.phpに追記したコードをもう一度リスト2として掲載しておきます。
Route::get("/hello", function() { // (1)
print("<h1>Hello World!</h1>"); // (2)
return null; // (3)
});
Laravelのルーティング情報登録の基本は、リスト2の(1)の記述であり、Routeクラスのget()メソッドを使います(※1)。構文としてまとめると以下の通りです。
Route::get(ルーティングパターン, 対応するコールバック関数);
※1:正確には、このRoute::get()は、Routeクラスのstaticメソッドget()を呼び出しているわけではありません。これは、Laravelのファサードという仕組みを使ってIlluminate\Routing\Routerクラスの各メソッドをstaticのように扱えるようになったものです。
リスト2の(1)ではルーティングパターンとして
/hello
を登録しています。
このパターンは、このindex.phpが実行されるポイントからの相対パスで記述します。index.phpが実行されるURLは「http://localhost/firstlaravel/public/」です。これに上記ルーティングパターンを付与したURLである「http://localhost/firstlaravel/public/hello」へのアクセスがあった場合、続くコールバック関数が実行される仕組みです。リスト2では、コールバック関数として無名関数を記述しており(※2)、(2)と(3)がコールバック関数の中身です。この(2)で「Hello World!」という文字列を表示させています。
(3)では戻り値としてnullをリターンしていますが、本来、この戻り値は画面に表示させるものをリターンさせます。ということは、実は、リスト2の(2)と(3)はまとめて以下のように記述できます。
Route::get("/hello", function() {
return "<h1>Hello World!</h1>";
});
ただ、実際には、もっと複雑なHTMLを表示させるのが普通です。その場合は、このreturn句の記述はもっと違うものになります。それに関しては、今後の連載中に紹介していきます。
※2:コールバック関数を使用しないルーティング登録方法もあります。こちらも、今後紹介していきます。
ルートパラメータ
リスト2のコールバック関数の引数は何も記述されていませんでした。ここに引数を記述し、利用する場面があります。そこを扱っておきましょう。
まず、web.phpにリスト3の内容を追記してください。
〜省略〜
Route::get("/whoAreYou/{name}", function($name) { // (1)
return "<h1>こんにちは".$name."さん</h1>";
});
追記が終了したら以下のURLでアクセスしてください。
- http://localhost/firstlaravel/public/whoAreYou/Bob
図3のように表示されます。
さらに、URLを以下に変更してください。
- http://localhost/firstlaravel/public/whoAreYou/James
図4のように表示されます。
これらの実行結果と、リスト3の(1)のルーティングパターンとを見比べてください。ルーティングパターンにある{name}の部分を変更するとそれに合わせて表示内容も変わります。
Laravelのルーティング登録では、URLに変数を埋め込むことができます。これを「ルートパラメータ」といい、ルーティングパターンに以下の記述をします。
"/…/{パラメータ名}"
