Laravel ルーティング URLアクセスしたときのブラウザ表示までの流れ

Laravel

Laravelのルーティング(routing)について、URLアクセスしたときのブラウザ表示までの流れを簡単に解説いたします。
Laravel Breezeプロジェクトの導入方法はこちら

エントリポイント(public/index.php)

index.php-解説

laravelのアプリケーションでは、urlアクセス時にエントリポイント(public/index.php)にアクセスが集まり、オートロードファイルの読み込み、アプリケーションの実行、HTTPレスポンスの送信が行われています。

MVC(Model View Controller)モデル

ルーティングでブラウザ表示されるまでの流れ

index.php(エントリーポイント)に全てのアクセスが集まる(public/index.php)
autoload, bootstrap, kernel などを読み込む

サービスコンテナやサービスプロバイダなどのlaravelの機能が読み込む

ルーティングでどのurlにアクセスするかを判断

(ミドルウェアに認証しているかの確認)

ルーティングで指定されたコントローラのメソッド(処理)を実行
DBへのアクセスの際、モデルを経由してコントローラとデータのやり取りをする

ルーティングで指定されたビュー / コントローラからビューに渡る

Route ルートファイル

web.phpは主にクライアント操作で起こるリクエスト(ボタンを押して画面遷移、フォームを送信など)でのルーティングに使用します。
auth.phpではログイン認証やパスワードリセットなどのルーティングが記載されています。
Laravel breezeを用いたログイン認証の導入方法

auth.phpを開き、/registerのルーティングを見てみます。

use Illuminate\Support\Facades\Route;  //Routeの読み込み
use App\Http\Controllers\User\Auth\RegisteredUserController;  //Controllerの読み込み

Route::get('/register', [RegisteredUserController::class, 'create']) //controller名, メソッド名
          ->middleware('guest')  //middleware('guest')で認証していなかったら
          ->name('register');  //名前つきルート

※Controller名::class, ‘method名’  laravel 8で@⇒::に変更
※middleware(‘auth’)で認証しているか確認

上記の場合、/registerでアクセスしたときに認証していなかったら、コントローラRegisteredUserControllerのcreateメソッド(関数)へ処理が渡ることになります。

Controller コントローラ側

app\Http\Controllers\Auth\RegisteredUserController.php

public function create()
{
  return view('auth.register');
}

getで/registerにアクセスした場合、コントローラ側ではcreateメソッド(関数)にて、view(bladeファイル)に返しています。

View ビュー側

resources\views\auth\register.blade.php

<x-guest-layout>
  <x-auth-card>
    <x-slot name="logo">
      <a href="/">
        <x-application-logo class="w-20 h-20 fill-current text-gray-500" />
      </a>
    </x-slot>

    <!-- Validation Errors -->
    <x-auth-validation-errors class="mb-4" :errors="$errors" />

    <form method="POST" action="{{ route('register') }}">
      @csrf
      //以下省略
      <x-button class="ml-4">
        {{ __('Register') }}
      </x-button>
    </form>
  </x-auth-card>
</x-guest-layout>

view側(register.blade.php)では、<form>タグ内にユーザー登録するのに必要な項目(name, email, password, password_confirmation)が<input>タグで用意されています。

POSTメソッドでregisterにルーティングしているので、「Register」ボタンが押下されると、コントローラ側(RegisteredUserController.php)のstoreに渡ります。

ルーティング(auth.php)

Route::post('/register', [RegisteredUserController::class, 'store'])
                ->middleware('guest');

ルーティングを確認するコマンド

php artisan route:list

または

php artisan route:list > route.txt

route.txtというファイルが作成され、ルート情報がテキスト内に吐き出されます。

laravel-route-list
上記のコマンドでルーティングが設定されているか確認することができます。