1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Basic Study LogAdvent Calendar 2024

Day 5

Laravel11のルーティングの書き方

Posted at

はじめに

Laravel9までは触ったことがあるのですが、そこから時が止まっているので最新バージョンではどれくらい書き方が変わっているのかをまとめたものです。

ルーティングの書き方

基本的な書き方

コールバックに直接処理を書く場合
use Illuminate\Support\Facades\Route;
 
Route::get('/greeting', function () {
    return 'Hello World';
});
コントローラーを指定する場合
use App\Http\Controllers\UserController;
 
Route::get('/user', [UserController::class, 'index']);

利用可能なHTTPメソッド

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

複数のHTTPメソッドに対応したい場合、一部を指定する場合はmatchメソッド、全てを使用する場合はanyメソッドが使える。

// getとpostのみ対応
Route::match(['get', 'post'], '/', function () {
    // ...
});

// 全てに対応
Route::any('/', function () {
    // ...
});

リダイレクトルート

// /hereから/thereへリダイレクト
Route::redirect('/here', '/there');

上記の場合、ステータスコードは302になるので別のステータスコードを設定したい場合は以下のように書ける。

// /hereから/thereへ301リダイレクト
Route::redirect('/here', '/there', 301);

また、301の場合は以下のようにも書ける。

// /hereから/thereへ301リダイレクト
Route::permanentRedirect('/here', '/there');

Viewルート

// /welcomeに来たらwelcome.blade.phpを返す
Route::view('/welcome', 'welcome');

// welcome.blade.phpに変数を渡す場合
Route::view('/welcome', 'welcome', ['name' => 'Taylor']);

名前付きルート

Route::get(
    '/user/profile',
    [UserProfileController::class, 'show']
)->name('profile');

ルートグループ

ミドルウェア

Route::middleware(['first', 'second'])->group(function () {
    Route::get('/', function () {
        // Uses first & second middleware...
    });
 
    Route::get('/user/profile', function () {
        // Uses first & second middleware...
    });
});

コントローラー

use App\Http\Controllers\OrderController;
 
Route::controller(OrderController::class)->group(function () {
    Route::get('/orders/{id}', 'show');
    Route::post('/orders', 'store');
});

サブドメイン

Route::domain('{account}.example.com')->group(function () {
    Route::get('/user/{id}', function (string $account, string $id) {
        // ...
    });
});

ルートプレフィックス

Route::prefix('admin')->group(function () {
    Route::get('/users', function () {
        // Matches The "/admin/users" URL
    });
});

ルート名プレフィックス

Route::name('admin.')->group(function () {
    Route::get('/users', function () {
        // Route assigned name "admin.users"...
    })->name('users');
});

まとめ

書き方という点ではそんなに変わっていないかなという印象でした。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?