Laravelでお問い合わせフォームを作成
はじめに
お問い合わせフォームを作成し、Gmailと連携が出来るように実装しました。デザインはtailblocksを使用しています。tailblocksはヘッダーや本文のレイアウトやお問い合わせフォームなどのデザインがテンプレートとして用意されており、気軽に利用出来るので便利です。今回はtailblocksのテンプレートを利用してお問い合わせフォームを作成しましたので、その使い方も含めてまとめました。
参考記事:ウツボウTECH
手順1: 入力ページの作成
まずは入力ページを作成し、テンプレートを表示させます。デザインはtailblocksを使用します。
ルーティングの設定
routes/web.php
- Route::get('contact', [MailController::class, 'create'])->name('mail.index');
MailControllerを新規で作成しました。
Controllers/MailController.php
- class MailController extends Controller
- {
- /**
- * Display the login view.
- */
- public function create(): View
- {
- return view('mail.index');
- }
テンプレートのデザインについては後述します。
resources/View/Mail/index.blade.php
手順2: tailblocksの使い方
tailblocksはCSS/JavaScript製のオープンソース・ソフトウェアです。ブロックデザインパターンとして用意された中からコピーして貼り付けるだけで使用出来ます。まず、前提としてlaravel breezeをインストールしておく必要があります。
composerを使ってlaravel/breezeパッケージを追加する
- $ composer require laravel/breeze --dev
artisanコマンドでインストールする
- $ php artisan breeze:install
headタグの中にviteを使い、app.cssを読み込ませる。
- vite(['resources/css/app.css', 'resources/css/blog_style.css', 'resources/js/app.js'])
こちらがtailwindの公式サイトです。
サイトからおと言い合わせフォームのデザインを選択して、コードをコピーします。あとはbuildするだけでデザインが反映されます
- $ npm run build
手順3: バリデーションの実装
artisanコマンドでリクエストクラスを作成する。
authorizeメソッドは認証しているかどうかチェックしたい時に使用する。デフォルトではfalseになっているので403エラーになってしまう。trueを返すか、使用しないのであれば削除する。
- <?php
- namespace App\Http\Requests;
- use Illuminate\Foundation\Http\FormRequest;
- class MailRequest 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<string, mixed>
- */
- public function rules()
- {
- return [
- 'name' => 'required|max:20',
- 'email' => 'required|email|max:100',
- 'message' => 'required|max:500',
- ];
- }
- }
バリデーションにnameとemailとmessageに対してrequire(必須)とmax(上限)のチェックを指定した。
- /**
- * Display the login view.
- */
- public function confirm(MailRequest $request): View
- {
- return view('mail.confirm', ['contents' => $request->validated()]);
- }
第一引数にMailRequestを指定することで、MailController.phpが呼ばれる前にMailRequest.phpでチェックを行なっている。
パラメーターを受け取る場合は以下のようにする。
- $params = $request->validated();
手順4: バリデーションメッセージを日本語で表示させる
configファイルをjaに変更する。
config/app.php
- 'locale' => 'ja',
デフォルトではenとなっているのでjaに変更
resources/lang/en/validation.phpファイルをresources/lang/ja/にコピーする。
日本語の訳を以下の公式サイトからコピーして日本語用のvalidation.phpファイルを作成する。
resources/lang/ja/validation.php
- attributes' => [
- 'name' => '氏名',
- 'email' => 'メールアドレス',
- 'message' => '本文',
- ],
そのままだとバリデーション表示時にnameやemailと表示されるので、keyに対してそれぞれ日本語を指定する。
プロフィールに戻る