Laravelのルーティング(routing)について、URLアクセスしたときのブラウザ表示までの流れを簡単に解説いたします。
Laravel Breezeプロジェクトの導入方法はこちら
エントリポイント(public/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で本格的にサイト構築に関する知識を学べる講座
【Laravel】マルチログイン機能を構築し本格的なECサイトをつくってみよう【Breeze/tailwindcss】
・phpの基礎からLaravelで簡易WEBアプリの作成方法を学べる講座
PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】