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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。