laravelでお問い合わせフォームを作成しているのですが、
入力内容修正のために戻るボタンと、送信ボタンのどちらともボタンを押すと、
The GET method is not supported for this route. Supported methods: POST.
のエラーが出てしまいます。
route
1//入力ページ 2Route::get('/contact', 'ContactController@index')->name('contact.index'); 3 4//確認ページ 5Route::post('/contact/confirm', 'ContactController@confirm')->name('contact.confirm'); 6 7//送信完了ページ 8Route::post('/contact/thanks', 'ContactController@send')->name('contact.send'); 9
controller
1class ContactController extends Controller 2{ 3 public function index() 4 { 5 //フォーム入力画ページのviewを表示 6 return view('contact.index'); 7 } 8 9 public function confirm(Request $request) 10 { 11 //バリデーションを実行(結果に問題があれば処理を中断してエラーを返す) 12 $request->validate([ 13 'name' => 'required', 14 'email' => 'required|email', 15 'title' => 'required', 16 'body' => 'required', 17 ]); 18 19 //フォームから受け取ったすべてのinputの値を取得 20 $inputs = $request->all(); 21 22 //入力内容確認ページのviewに変数を渡して表示 23 return view('contact.confirm', [ 24 'inputs' => $inputs, 25 ]); 26 27 28 } 29 30 public function send(Request $request) 31 { 32 //バリデーションを実行(結果に問題があれば処理を中断してエラーを返す) 33 $request->validate([ 34 'name' => 'required', 35 'email' => 'required|email', 36 'title' => 'required', 37 'body' => 'required' 38 ]); 39 40 //フォームから受け取ったactionの値を取得 41 $action = $request->input('action'); 42 43 //フォームから受け取ったactionを除いたinputの値を取得 44 $inputs = $request->except('action'); 45 46 //actionの値で分岐 47 if($action !== 'submit'){ 48 return redirect() 49 ->route('contact.index') 50 ->withInput($inputs); 51 52 } else { 53 //入力されたメールアドレスにメールを送信 54 \Mail::to($inputs['email'])->send(new ContactSendmail($inputs)); 55 56 //再送信を防ぐためにトークンを再発行 57 $request->session()->regenerateToken(); 58 59 //送信完了ページのviewを表示 60 return view('contact.thanks'); 61 62 } 63 } 64} 65
indexview
1 <form method="POST" action="{{ route('contact.confirm') }}"> 2 @csrf 3 4 <label>お名前</label> 5 <input 6 name="name" 7 value="{{ old('name') }}" 8 type="text"> 9 @if ($errors->has('name')) 10 <p class="error-message">{{ $errors->first('name') }}</p> 11 @endif 12 13 <label>メールアドレス</label> 14 <input 15 name="email" 16 value="{{ old('email') }}" 17 type="text"> 18 @if ($errors->has('email')) 19 <p class="error-message">{{ $errors->first('email') }}</p> 20 @endif 21 22 <label>タイトル</label> 23 <input 24 name="title" 25 value="{{ old('title') }}" 26 type="text"> 27 @if ($errors->has('title')) 28 <p class="error-message">{{ $errors->first('title') }}</p> 29 @endif 30 31 32 <label>お問い合わせ内容</label> 33 <textarea name="body">{{ old('body') }}</textarea> 34 @if ($errors->has('body')) 35 <p class="error-message">{{ $errors->first('body') }}</p> 36 @endif 37 38 <button type="submit"> 39 入力内容確認 40 </button> 41 </form>
comfirmview
1<form method="POST" action="{{ route('contact.send') }}"> 2 @csrf 3 4 <label>お名前</label> 5 {{ $inputs['name'] }} 6 <input 7 name="name" 8 value="{{ $inputs['name'] }}" 9 type="hidden"> 10 11 <label>メールアドレス</label> 12 {{ $inputs['email'] }} 13 <input 14 name="email" 15 value="{{ $inputs['email'] }}" 16 type="hidden"> 17 18 <label>タイトル</label> 19 {{ $inputs['title'] }} 20 <input 21 name="title" 22 value="{{ $inputs['title'] }}" 23 type="hidden"> 24 25 26 <label>お問い合わせ内容</label> 27 {!! nl2br(e($inputs['body'])) !!} 28 <input 29 name="body" 30 value="{{ $inputs['body'] }}" 31 type="hidden"> 32 33 <button type="submit" name="action" value="back"> 34 入力内容修正 35 </button> 36 <button type="submit" name="action" value="submit"> 37 送信する 38 </button> 39</form> 40
どなたかご回答いただけないでしょうか。
何卒よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー