Laravel - ルーティング:入門ガイド
こんにちは、Laravel開発者を目指している皆さん!今日は、Laravelのルーティングの世界に一緒に飛び込みます。近所の親切なコンピュータ教師として、この基本概念を理解するまでガイドしますので、コーヒー(またはお好みでテー)を片手に、一緒に深めましょう!
ルーティングとは?
始める前に、ルーティングが実際に何かを理解しましょう。大きな図書館(インターネット)にいるとします。特定の本(ウェブページ)を見つけたいと思っています。図書館司書(ルーター)があなたにその本を見つける手助けをしてくれます。ウェブ開発におけるルーティングは、この図書館司書のように、ウェブリクエストをアプリケーションの正しい部分に導くものです。
基本的なルーティング
まず基本的なことをから始めましょう。Laravelでは、ルーティングは routes/web.php
ファイルで処理されます。ここで、アプリケーションにどのように不同のURLリクエストに応えるかを指示します。
シンプルなルート
以下は、最もシンプルな形のルートです:
Route::get('/', function () {
return 'Hello, World!';
});
これを分解すると:
-
Route::get()
は Laravel に GET リクエストに応えるように指示します。 - 第一引数
'/'
は URL パス(この場合はホームページ)です。 - 第二引数は、ブラウザに返す内容を返す関数です。
ウェブサイトのホームページにアクセスすると、「Hello, World!」が表示されます。
ビューを返すルート
単なるテキストを返すのではなく、完全なHTMLページを返したいことがよくあります。Laravelはこれを簡単にします:
Route::get('/welcome', function () {
return view('welcome');
});
このルートは、誰かが /welcome
を訪れると welcome
ビューを返します。ビューは resources/views
ディレクトリに保存されたHTMLテンプレートです。
コントローラーを使ったルート
アプリケーションが成長すると、コードをより良く整理するためにコントローラーを使いたくなります:
Route::get('/users', 'UserController@index');
このルートは、誰かが /users
を訪れると UserController
の index
メソッドを呼び出します。
ルートパラメータ
もう少し興味深いことに進みましょう。URLに動的セグメントを処理したい場合はどうでしょうか?
基本的なパラメータ
Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});
このルートは /user/1
、/user/2
などにマッチします。URLの {id}
は関数に渡される変数になります。
任意のパラメータ
時々、パラメータが任意であることがあります。それも処理できます:
Route::get('/user/{name?}', function ($name = 'John') {
return 'Hello, '.$name;
});
このルートは /user
と /user/Jane
どちらにも対応します。名前が提供されない場合は、デフォルトで 'John' になります。
パラメータの制約
パラメータに制約を加えることもできます。正規表現を使います:
Route::get('/user/{id}', function ($id) {
return 'User '.$id;
})->where('id', '[0-9]+');
このルートは、id
が1つ以上の数字で構成されている場合にのみマッチします。
ネーム付きルート
ネーム付きルートを使用すると、URLではなく名前を使ってルートを参照できます。これはアプリケーション内でURLを生成したりリダイレクトをしたいために特に便利です。
ネーム付きルートの定義
Route::get('/user/profile', function () {
//
})->name('profile');
ネーム付きルートの使用
ルートが名前付きに設定されると、以下のようにURLを生成したりリダイレクトをしたたりできます:
// URLを生成する...
$url = route('profile');
// リダイレクトする...
return redirect()->route('profile');
これは非常に便利で、プロファイルページのURLを変更する必要があった場合、ルートの定義を1か所で変更するだけで、すべての参照が自動的に新しいURLを使用するようになります。
ルートグループ
アプリケーションが成長すると、同じミドルウェアやプレフィックスを複数のルートに適用することがあります。Laravelはこれらのルートをグループ化することを許可します:
Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', function () {
// 認証が必要...
});
Route::get('/account', function () {
// 認証が必要...
});
});
これは auth
ミドルウェアを /dashboard
と /account
の両方に適用します。
ルートメソッド
Laravelはすべての標準的なHTTP動詞をサポートしています。以下は快速参照表です:
HTTP動詞 | ルートメソッド |
---|---|
GET | Route::get() |
POST | Route::post() |
PUT | Route::put() |
PATCH | Route::patch() |
DELETE | Route::delete() |
OPTIONS | Route::options() |
mêmeルートに対して複数のHTTP動詞を応答するすることもできます:
Route::match(['get', 'post'], '/', function () {
//
});
Route::any('/', function () {
//
});
それで、Laravelのルーティングの世界への第一歩を踏み出しました。慣れるには練習が大事ですので、さまざまなルートを試してみてください。
最後に、ちょっとしたルーティングのジョークをどうぞ:開発者はなぜ破産したのでしょうか?すべてのキャッシュを使い果たしたからです!?
ハッピーコーディング、そしてあなたのルートがいつも望む場所に導いてくれることを祈っています!
Credits: Image by storyset