Laravel 5でのフォームリクエストを使用した問い合わせフォームの作成に関する記事を以下に詳述します。このガイドでは、Laravelのフォームリクエスト機能を活用して、簡単で堅牢な問い合わせフォームを作成する方法について説明します。
1. Laravel 5のインストールと設定
まず、Laravel 5をインストールし、基本的な設定を行う必要があります。LaravelはPHPフレームワークであり、Composerを使用してインストールできます。以下のコマンドでLaravelのプロジェクトを作成します。

bashcomposer create-project --prefer-dist laravel/laravel contact-form
インストール後、contact-form
というディレクトリにプロジェクトが作成されます。このディレクトリに移動して、Laravelアプリケーションを開始します。
2. データベースの設定
Laravelではデータベース接続の設定が重要です。.env
ファイルを開いて、使用するデータベースの設定を行います。例えば、MySQLを使用する場合は、次のように設定します。
dotenvDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=contact_form DB_USERNAME=root DB_PASSWORD=
次に、config/database.php
ファイルで設定が正しく反映されていることを確認します。
3. フォームリクエストクラスの作成
Laravelのフォームリクエストは、フォームデータのバリデーションロジックを分離して管理するための便利な方法です。フォームリクエストクラスを使うことで、コントローラーのコードをシンプルに保つことができます。
フォームリクエストを作成するには、次のコマンドを実行します。
bashphp artisan make:request ContactFormRequest
これにより、app/Http/Requests/ContactFormRequest.php
というファイルが作成されます。このファイルでフォームリクエストに関するバリデーションルールを定義します。以下はその例です。
php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ContactFormRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true; // 権限の確認は後で設定する
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|max:255',
'message' => 'required|string|min:10',
];
}
/**
* バリデーションエラーメッセージのカスタマイズ
*
* @return array
*/
public function messages()
{
return [
'name.required' => '名前は必須です。',
'email.required' => 'メールアドレスは必須です。',
'message.required' => 'メッセージは必須です。',
];
}
}
このクラスでは、rules
メソッドでフォームデータに対するバリデーションルールを定義しています。また、messages
メソッドでは、カスタムエラーメッセージを設定しています。authorize
メソッドは、リクエストが認証されたかどうかを確認するためのもので、今回は全てのユーザーがリクエストできるようにtrue
を返しています。
4. コントローラーの作成
次に、フォームのデータを処理するためのコントローラーを作成します。以下のコマンドでコントローラーを作成します。
bashphp artisan make:controller ContactController
app/Http/Controllers/ContactController.php
に以下のようなコードを追加します。
php
namespace App\Http\Controllers;
use App\Http\Requests\ContactFormRequest;
use Illuminate\Http\Request;
class ContactController extends Controller
{
/**
* フォームを表示する
*/
public function showForm()
{
return view('contact');
}
/**
* フォームデータを処理する
*/
public function submitForm(ContactFormRequest $request)
{
// バリデーションが通ったデータを取得
$validated = $request->validated();
// ここでデータを処理(例えばデータベースに保存)
// DB::table('contacts')->insert($validated);
// ユーザーにフィードバックを返す
return redirect()->back()->with('success', 'メッセージが送信されました');
}
}
このコントローラーには2つのメソッドがあります。showForm
メソッドはフォームを表示し、submitForm
メソッドはフォームから送信されたデータを処理します。フォームリクエストクラス(ContactFormRequest
)を引数として受け取ることで、自動的にバリデーションが実行され、バリデーションエラーがあればリダイレクトされます。
5. ルートの設定
次に、フォームを表示するためとデータを送信するためのルートを設定します。routes/web.php
に以下のコードを追加します。
phpuse App\Http\Controllers\ContactController;
Route::get('/contact', [ContactController::class, 'showForm']);
Route::post('/contact', [ContactController::class, 'submitForm']);
これにより、/contact
へのGETリクエストでフォームが表示され、POSTリクエストでフォームデータが送信されます。
6. フォームビューの作成
次に、問い合わせフォームのビューを作成します。resources/views/contact.blade.php
というファイルを作成し、以下のようにフォームを記述します。
blade
お問い合わせフォーム お問い合わせフォーム
@if(session('success')){{ session('success') }}
@endif
このビューでは、@error
ディレクティブを使用して、バリデーションエラーが発生した場合にエラーメッセージを表示します。また、old
関数を使用して、送信したデータがフォームに再表示されるようにしています。
7. フォーム送信後の処理
フォームが送信され、データが正常にバリデーションを通過した場合、submitForm
メソッドで処理されます。データはデータベースに保存したり、メールで送信したりすることができます。この例では、データベースに保存する処理をコメントアウトしていますが、実際には次のように記述することができます。
phpDB::table('contacts')->insert([
'name' => $validated['name'],
'email' => $validated['email'],
'message' => $validated['message'],
]);
結論
Laravel 5でフォームリクエストを使用して問い合わせフォームを作成する方法について説明しました。フォームリクエストを利用することで、バリデーションロジックを簡潔に保ち、コードを整理することができます。また、コントローラーやビューを分割することで、保守性の高いアプリケーションを作成できます。