http://[URL]/register から登録情報を入力して「登録」を押すとデータが処理されてデータベースに登録されます
1.Route::post('/register',
Route::postは[RegisteredUserController::class, 'store']にルーティングされています
2-2.Route::post('/register'のコントローラー
store()はcreateと異なりいろいろな仕事をしています。
①store(Request $request) はhttp://[URL]/registerからのFORMリクエストのオブジェクト変数$requestを引数にしたものです。
②$request->validate はそのオブジェクト変数$requestに対してIlluminate\Http\Requestオブジェクトが提供するvalidateメソッドを適用しています。
この中にruleが記載されています。
③'email'のルール、'unique:'.User::classはModel/User経由でDBに参照してuniqueつまり重複していないこと、というルールです。
④'password'のルール Rules\Password::defaults() はパスワードに求められる初期ルールを定義しています。
このルールはAppServiceProviderに登録されているべきなのですが、Breezeでは未登録の状態です。
⑤User::create() はModel\User経由でDBへのアクセスを行います。
モデルクラスからcreateメソッドを呼ぶことで、インスタンスの作成->属性の代入(fillメソッドを実行)->データの保存(saveメソッドを実行)を
一気に実行することができます。結果が$userに代入されます。
⑥event(new Registered($user)) イベントはリスナーとセットになっています。event() はそのイベントをアプリケーションのなかで発生させるメソッドです。
イベントクラスはmake:eventで作成する必要があるのですが、ここではすでにIlluminate\Auth\Events\Registered に実装済のようです。
これに対応するリスナーがどこにあるのかは不明ですが、登録通知などのメール送信がこのevent()で容易にできそうです。
⑦Auth::login($user) はAuthファサードのloginメソッドです。
ユーザーがアプリケーションに登録した直後など、すでに有効なユーザーインスタンスがある場合に役立ちます
⑧return redirect(route('dashboard', absolute: false)) で'dashboad'に遷移します。
'dashboad'はroutes\web.php に定義されたRoute::get('dashboard', の名称です。
route\web.php
->middleware(['auth', 'verified'])はこのRoute::get('dashboard', に'auth', 'verified'のmiddlewareを適用するということ
'auth', 'verified'はそれぞれLaravel11に組み込まれたmiddlewareクラスのエイリアス名です。
3.dashboard.blade.php と関連Blade
・dashboard.blade.php コンテンツの核をなすファイルです。子View -(A)
・layouts/app.blade.php Vが継承しているレイアウトです。親View -(B)
・layouts/navigation.blade.php (B) に挿入されるパーツです -(C)
dashboard.blade.php
特段の注意点はありません。このコンテンツがapp.blade.phpの{{ $slot }} にそのまま入ります。
app.blade.php
********************
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
//headの内容
</head>
<body class="font-sans antialiased">
<div class="min-h-screen bg-gray-100">
//navigation.blade.phpの中身
<!-- Page Heading -->
<header class="bg-white shadow">
<div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
//{{ $header }}にdashboard.blade.php の<x-slot name="header">
</div>
</header>
<!-- Page Content -->
<main>
//{{ $slot }}にdashboard.blade.php <x-slot name="header">以外の中身
</main>
</div>
</body>
********************
layouts/navigation.blade.php はLaravel Components 記述が満載なので、項目を改めて解説します。
Comentarios