質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

1404閲覧

Laravel9 問い合わせフォーム 入力内容確認画面から入力画面に戻れない。

tkm0604

総合スコア552

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2022/10/26 06:43

編集2022/10/26 08:55

laravel9 問い合わせフォームを作成しました。

問い合わせフォームは、「入力画面(company-info/{企業ID})」-> 「確認画面 (contact/confirm)」->「送信完了画面 (contact/thanks)」へとページ遷移します。

しかし、この「入力画面」は、登録企業詳細ページに設置してあり、問い合わせフォームのURLは以下のようになっています。

http://localhost/company-info/{企業ID}

「確認画面 (contact/confirm)」へと遷移した際に 「入力画面に戻る」ボタンを押すとcompany-info/{企業ID}へ戻りたいのですが、「入力画面に戻る」場合リダイレクト処理、コントローラーの書き方がわかりません。

また、送信ボタンを押すと、登録企業のメールアドレスも取得して問い合わせ内容を送信したいです。

コントローラーの処理は以下のように書いています。

ContactsController.php

1public function send(Request $request) 2{ 3 $request->validate([ 4 'company_name' => ['nullable', 'string', 'max:255'], 5 'contact_name' => ['required', 'string', 'max:255'], 6 'kana' => ['required', 'string', 'max:255', 'regex:/^[ア-ン゛゜ァ-ォャ-ョー]+$/u'], 7 'tell' => ['required', 'numeric', 'digits_between:10,11'], 8 'zipcode' => ['nullable', 'numeric', 'digits_between:6,7'], 9 'add' => ['required', 'string', 'max:255'], 10 'email' => ['required', 'email', 'max:255'], 11 'body' => ['required','max:255'] 12 ]); 13 14 // actionの値を取得 15 $action = $request->input('action'); 16 17 // action以外のinputの値を取得 18 $inputs = $request->except('action'); 19 20 //actionの値で分岐 21 if($action !== 'submit'){ 22 // 戻るボタンの場合リダイレクト処理 23 return redirect() 24 ->route('company-info/{企業ID}') 25 ->withInput($inputs); 26 } else { 27 // 送信ボタンの場合、送信処理 28 29 // ユーザにメールを送信 30 \Mail::to($inputs['email'])->send(new ContactsSendmail($inputs)); 31 // 自分にメールを送信 32 \Mail::to('{企業ID}->email')->send(new ContactsSendmail($inputs)); 33 34 // 二重送信対策のためトークンを再発行 35 $request->session()->regenerateToken(); 36 37 // 送信完了ページのviewを表示 38 return view('contact.thanks'); 39 40 } 41}

{企業ID}の取得方法が分かればいいのですが、その方法を教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

<form></form>のなかに

ContactsController.php

1 <input type="hidden" name="company_id" value="{{$user->id}}">

を追加して(フォームページにユーザー情報を渡して)ページ間でユーザー情報を渡す方法で解決しました。

投稿2022/10/28 08:09

tkm0604

総合スコア552

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

route関数でidを明示的に入れるのでもいいけど、back使うのが楽かもしれません

return back()->withInput($inputs);

投稿2022/10/26 07:06

muteki_gamer

総合スコア157

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkm0604

2022/10/26 08:43 編集

コメントありがとうございます。 教えて頂いたコードを用いて以下のようにしたのですが、 // actionの値を取得 $action = $request->input('action'); // action以外のinputの値を取得 $inputs = $request->except('action'); //actionの値で分岐 if($action !== 'submit'){ // 戻るボタンの場合リダイレクト処理 return back()->withInput($inputs); } else {        // 送信ボタンの場合、送信処理    } 「The GET method is not supported for this route. Supported methods: POST.」エラーとなります。 また、「戻る」ボタンを押すとURLがcontact/confirm(入力内容確認画面になります。) 入力内容確認画面は、送信するのにも使うためweb.phpルートを以下のようにPOSTにしています。 Route::post('contact/confirm', [App\Http\Controllers\ContactsController::class, 'confirm'])->name('contact.confirm'); 「確認画面 (contact/confirm)」から「戻る」ボタンで「入力画面(company-info/{ユーザーID})」へ遷移したいのですが、実現できていません。。。。 また、質問文にも追記しましたが、else 以降の // 送信ボタンの場合、送信処理で // 自分にメールを送信 \Mail::to('ここに登録ユーザーのメールアドレスが入る。 例) $user->mail')->send(new ContactsSendmail($inputs)); があるので、やはりroute関数でidを明示的にしないといけませんでした。。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問