入力 → 確認 → 送信画面のテンプレ(お問い合わせフォーム)

2020/06/24

入力画面 → 確認画面 → 送信画面は作成頻度が高いです。

なので、今回はコピペ用で記事をエントリーしておこうと思います。

なお、「データベースの挿入」・「リクエストバリデーション」は今回は省略します。

 

お問い合わせフォーム(コピペ用)

ルーティング


// 入力画面
Route::get('contact/', 'InquiryController@input');

// 確認画面
Route::patch('contact/', 'InquiryController@confirm');

// 完了画面
Route::post('contact/', 'InquiryController@finish');

 

ビュー

入力画面

# input.blade.php
:
<form method="post">
{{ method_field('patch') }}
<input type="hidden" name="_token" value="{{ csrf_token() }}">
お名前:<input type="text" name="user_name" value="{{ old('user_name') }}" required>
メールアドレス : <input type="email" name="email" value="{{ old('email') }}" required pattern="^.+@.+\..+$">
:

LaravelではデフォルトでCSRF(シーサーフ)が有効になっているので、フォームの作成時にはCSRFトークンをフォームに埋め込まなければなりません。

 

確認画面

# confirm.blade.php
:
<form method="post">
お名前:{{ $request->user_name }}  <input type="hidden" name="user_name" value="{{ $request->user_name }}" />
メールアドレス : {{ $request->email }} <input type="hidden" name="email" value="{{ $request->email }}">
:

 

完了画面

# finish.blade.php
:
お問い合わせ内容の送信が完了いたしました。
:

 

コントローラ


php artisan make:controller InquiryController

 

入力画面

public function input()
{
  
  // Bladeで使う変数
  $hash = array(
    'title' => 'お問い合わせ',
    'subtitle' => '入力画面',
   );
  return view('input')->with($hash);
}

 

確認画面

public function confirm(Request $request)
{
  // Bladeで使う変数
  $hash = array(
    'request' => $request,
    'title' => 'お問い合わせ',
    'subtitle' => '確認画面',
   );
  return view('confirm')->with($hash);
}

 

完了画面

public function send(Request $request)
{
  Mail::send(array('text' => 'inquiry.message'), ['request' => $request], function($message) {
        $message->to('送信先メールアドレス')->from('メールアドレス')->subject('お問合せありがとうございます。');
  });

  // Bladeで使う変数
  $hash = array(
    'title' => 'お問い合わせ',
    'subtitle' => '完了画面',
   );

return view('finish')->with($hash);
}

 
Mail ファサードについての詳しい使い方は以下をご参考ください。

 
以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-基礎知識