Laravelで問い合わせフォームを作成する&DB作成方法
問い合わせフォームを作成
web.php
// コンタクトフォームページ
Route::get('/contact', function () {
return view('contact');
});
use App\Http\Controllers\ContactController;
// コンタクトフォームのデータ送信を処理するルート
Route::post('/contact', [ContactController::class, 'store']);
contact.blade.php
<!-- resources/views/contact.blade.php -->
@extends('layouts.app')
@section('title', 'コンタクトフォーム')
@section('content')
<h1>お問い合わせ</h1>
<!-- 送信先を設定 -->
<form method="POST" action="{{ url('/contact') }}">
<!-- CSRFトークンを設定(セキュリティ対策) -->
@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>
<!-- 送信ボタン -->
<div>
<button type="submit">送信</button>
</div>
</form>
@endsection
DBを作成
ターミナルを開き、マイグレーションファイルを作成(database/migrationsディレクトリに新しいマイグレーションファイルを生成)
php artisan make:migration create_contacts_table --create=contacts
生成されたマイグレーションファイルを開き、upメソッド内にテーブルのカラムを定義します。例えば、名前、メールアドレス、メッセージのカラムを追加するには、以下のように記述します。
public function up()
{
Schema::create('contacts', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->text('message');
$table->timestamps();
});
}
ターミナルでマイグレーションを実行
php artisan migrate
モデル作成
Laravelでは、データベースのテーブルとやり取りするためにEloquent ORMを使用します。各テーブルは通常、対応する「モデル」によって表されます。
php artisan make:model Contact
このコマンドはapp/ModelsディレクトリにContactモデルを生成します。このモデルを使用して、データベースのcontactsテーブルに対してCRUD(作成、読み取り、更新、削除)操作を行うことができます。
モデルを使用したデータの保存
ContactController内で、フォームから送信されたデータをContactモデルを使用してデータベースに保存するには、以下のように記述します。
use App\Models\Contact;
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
'message' => 'required',
]);
// モデルを使用してデータをデータベースに保存
$contact = new Contact();
$contact->name = $validated['name'];
$contact->email = $validated['email'];
$contact->message = $validated['message'];
$contact->save();
return redirect('/')->with('success', 'お問い合わせありがとうございます!');
}
このコードでは、まずフォームの入力をバリデーションし、その後新しいContactインスタンスを作成して、フォームからのデータを各属性に代入します。最後にsaveメソッドを呼び出して、これらのデータをデータベースに保存します。
以上の手順で、お問い合わせフォームからのデータを受け取り、バリデーションを行い、データベースに保存する流れが完成します。
この記事が気に入ったらサポートをしてみませんか?