Laravel - フォーム:入門ガイド

こんにちは、将来の開発者さんたち!コンピュータサイエンスの教師として多年間の経験を積んでいる者として、Laravel フォームのエキサイティングな世界を案内することを楽しみにしています。プログラミングが初めての方也不用担心——基本から始めて、少しずつ進んでいきます。このチュートリアルの終わりまでに、プロのようにフォームを作成できるようになるでしょう!

Laravel - Forms

Laravel フォームとは?

コードに取り組む前に、Laravel フォームとは何かを理解しましょう。オンラインで求人応募用紙を記入する imagine——それはフォームです!ウェブ開発では、フォームを使ってユーザーから情報を収集します。私たちの親愛なる PHP フレームワーク、Laravel は、これらのフォームの作成と処理を簡単にしてくれます。

フォームに Laravel を使う理由は?

「なぜ Laravel なの?」と思うかもしれません。ちょっとした話をします。若い開発者だった頃(はて、恐竜が歩き回っていた時代)、フォームを作成するのは一筋縄ではいかなかったんです。でも Laravel が登場して、強力なツールとセキュリティ機能で私たちの生活を大大に楽にしてくれました。

はじめに

まず第一に、Laravel がシステムにインストールされていることを確認してください。まだインストールしていない場合は、公式の Laravel インストールガイドに従ってください。

例 1: シンプルな連絡先フォームの作成

まずはシンプルな連絡先フォームを作成してみましょう。名前、メール、メッセージを求めるフォームを作成します。

ステップ 1: ルートの作成

routes/web.php ファイルを開き、以下の行を追加します:

Route::get('/contact', 'ContactController@showForm');

これで、誰かが '/contact' URL を訪れると、私たちの連絡先フォームが表示されます。

ステップ 2: コントローラーの作成

ターミナルで以下のコマンドを実行します:

php artisan make:controller ContactController

そして、新しく作成された ContactController.php ファイルを開き、以下のメソッドを追加します:

public function showForm()
{
return view('contact');
}

このメソッドは、連絡先フォームのビューを返します。

ステップ 3: ビューの作成

resources/views フォルダに新しいファイル contact.blade.php を作成し、以下のコードを追加します:

<form action="/submit-contact" method="POST">
@csrf
<div>
<label for="name">名前:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">メール:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="message">メッセージ:</label>
<textarea id="message" name="message" required></textarea>
</div>
<button type="submit">送信</button>
</form>

以下のように分解します:

  • @csrf は、フォームに隠されたトークンを追加し、CSRF 攻撃を防ぎます。これはフォームと Laravel の間の「秘密の握手」と考えてください。
  • 名前、メール、メッセージの入力フィールドを作成しています。
  • required 属性は、ユーザーがフォームを送信する前にすべてのフィールドを記入することを確保します。

ステップ 4: フォームの送信を処理

web.php に新しいルートを追加します:

Route::post('/submit-contact', 'ContactController@submitForm');

そして、ContactController に以下のメソッドを追加します:

public function submitForm(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
'message' => 'required',
]);

// フォームデータを処理(例:データベースに保存、メールを送信)

return redirect('/contact')->with('success', 'メッセージありがとうございます!');
}

このメソッドは、フォームデータを検証し、連絡先ページにリダイレクトして成功メッセージを表示します。

例 2: 登録フォームの作成

少し練習をしたので、もう少し複雑な登録フォームを作成してみましょう。

ステップ 1: ルートの作成

web.php に以下を追加します:

Route::get('/register', 'RegisterController@showForm');
Route::post('/register', 'RegisterController@register');

ステップ 2: コントローラーの作成

以下のコマンドを実行します:

php artisan make:controller RegisterController

そして、RegisterController に以下のメソッドを追加します:

public function showForm()
{
return view('register');
}

public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
'date_of_birth' => 'required|date',
'gender' => 'required|in:male,female,other',
]);

// ユーザー作成ロジックここに

return redirect('/register')->with('success', '登録が完了しました!');
}

ステップ 3: ビューの作成

resources/views フォルダに register.blade.php ファイルを作成し、以下のコードを追加します:

<form action="/register" method="POST">
@csrf
<div>
<label for="name">名前:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">メール:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="password">パスワード:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<label for="password_confirmation">パスワードを確認:</label>
<input type="password" id="password_confirmation" name="password_confirmation" required>
</div>
<div>
<label for="date_of_birth">生年月日:</label>
<input type="date" id="date_of_birth" name="date_of_birth" required>
</div>
<div>
<label>性別:</label>
<input type="radio" id="male" name="gender" value="male" required>
<label for="male">男性</label>
<input type="radio" id="female" name="gender" value="female">
<label for="female">女性</label>
<input type="radio" id="other" name="gender" value="other">
<label for="other">その他</label>
</div>
<button type="submit">登録</button>
</form>

このフォームには、テキスト、メール、パスワード、日付、ラジオボタンなどのさまざまな入力タイプが含まれています。

フォーム検証メソッド

以下は、Laravel で一般的に使用される検証メソッドの表です:

メソッド 説明
required フィールドが空であってはならない
email 有効なメールアドレスである必要がある
max:value 最大文字数
min:value 最小文字数
unique:table 指定されたデータベーステーブル内でユニークである必要がある
confirmed 同じ名前のフィールドと一致する必要がある(例:password_confirmation)
date 有効な日付である必要がある
in:foo,bar,... 指定された値のいずれかである必要がある

結論

おめでとうございます!2つの Laravel フォームを作成し、処理方法を学びました。練習は完璧を生みますので、さまざまなフォームタイプと検証ルールを試してみてください。

最後に、ちょっとしたエピソードを共有します。私の生徒の一人がフォームに恐怖を感じていました——彼はそれが複雑で不思議なものだと思っていました。しかし、いくつかのレッスン後、彼は楽しみにフォームを作成するようになりました!Laravel は、複雑なものを楽しいものに変える魔法を持っています。

コードを続け、好奇心を持ち続け、質問をすることをためらわないでください。フォーム作成を楽しんでください!

Credits: Image by storyset