はじめに
こんにちは、Webエンジニアの岩田史門(@SI_Monxy)です!
今回はLaravelのルーティングについて記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!!
概要
Laravelは、非常に強力で柔軟なルーティングシステムを提供しています。ここでは、Laravelのルーティングについて基本から応用までをサンプルコードと共に解説します。
基本編
ルートの定義
Laravelでは、ルートは routes/web.php ファイルに定義します。以下は基本的なルートの定義方法です。
Route::get('/', function () {
return view('welcome');
});
この例では、/ にアクセスすると welcome ビューが表示されます。
HTTPメソッドとルーティング
Laravelは、GET、POST、PUT、DELETEなどのHTTPメソッドに対するルートを定義することができます。
Route::get('/hello', function () {
return 'Hello, World!';
});
Route::post('/submit', function () {
return 'Form submitted';
});
ルートパラメータ
ルートパラメータを使用すると、URLの一部を変数として取得できます。
Route::get('/user/{id}', function ($id) {
return 'User ID: ' . $id;
});
オプションパラメータ
ルートパラメータをオプションにすることもできます。
Route::get('/user/{name?}', function ($name = 'Guest') {
return 'User Name: ' . $name;
});
応用編
ルートグループ
共通のミドルウェアや名前空間を持つルートをグループ化できます。
Route::prefix('admin')->group(function () {
Route::get('/dashboard', function () {
return 'Admin Dashboard';
});
Route::get('/users', function () {
return 'Admin Users';
});
});
名前付きルート
名前付きルートは、ルートに名前を付けて、URL生成やリダイレクトで使用できます。
Route::get('/profile', function () {
return 'User Profile';
})->name('profile');
// 使用例
$url = route('profile');
return redirect()->route('profile');
ルートモデルバインディング
Laravelのルートモデルバインディングを使うと、モデルを自動的にルートに注入することができます。
// モデルバインディングなし
Route::get('/user/{id}', function ($id) {
$user = App\Models\User::findOrFail($id);
return $user;
});
// モデルバインディングあり
Route::get('/user/{user}', function (App\Models\User $user) {
return $user;
});
ミドルウェア
ミドルウェアを使って、ルートに特定の条件を追加することができます。例えば、認証が必要なルートを定義する場合です。
Route::get('/dashboard', function () {
return 'Dashboard';
})->middleware('auth');
サブドメインルーティング
Laravelでは、サブドメインに対するルートも簡単に定義できます。
Route::domain('{account}.example.com')->group(function () {
Route::get('user/{id}', function ($account, $id) {
return 'Account: ' . $account . ' - User ID: ' . $id;
});
});
まとめ
Laravelのルーティングシステムは非常に強力で、シンプルなものから高度なものまで様々なルート定義をサポートしています。基本を押さえた上で、応用的な機能を使いこなして、より複雑なアプリケーションを構築していきましょう。