rarala2020
@rarala2020 (ら らら)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Laravel】inputタグの情報をページネーション後も引き継ぎたい

Laravel6を使用しています。

商品リストの中から複数の商品を選択し、
入力した名前や文章と共にsubmitするというフォームを作成しています。(post/create というページ)

商品が膨大にあるため、フォーム画面内でページネーションをさせて表示しているのですが、
ページ遷移と共に入力していたinput内のテキストやvalueが消えてしまうので、この情報を保持した状態でページ遷移をさせたいです。

セッションを保持していくイメージなのですが、どこにどのような記述をすれば入力値を保持できますでしょうか。

submitを押す前なので、storeメソッド内で$requestから値を取得してkey,valueを保存したり、
Input::old('')を使うことも出来なそうで実装方法が分からずにいました。

初心者質問で恐れ入りますが、アドバイスいただけますと幸いです。

PostsController.php
 public function create(Request $request)
 {
   $perPage = 40;
   $items = DB::table("items")->select("*")->addSelect("items.id")->orderBy('updated_at', 'desc')->simplePaginate($perPage);
}
<form action="/post/store" method="POST">
           {{ csrf_field() }}
         <input type="text" id="who" name="who" required>
                <textarea id="title" name="title" required></textarea>
                <input id="url1" type="hidden" name="url1" value="">
                <input id="url2" type="hidden" name="url2" value="">
                <input id="url3" type="hidden" name="url3" value="">
                <input id="url4" type="hidden" name="url4" value="">
                <input class="bt" id="submit" type="submit" value="決定"></div>
</form>
0

1Answer

コントローラーでバリデーションをしていると思います。


$attribute = $request->validate(['url1'=>'required','url2'=>'required','url3'=>'required','url4'=>'required']);

フォーム INPUTタグの値が$attributeに入るので、セッションにput。

if(!isset(session()->get('form_values')) {
    session()->put('form_values' ,$attribute);
    $form_values = $attribute;
}else{
    $form_values = session()->get('form_values');
}


return view('example', compact('form_values')); // form_valuesをbladeに渡す


bladeの記述はこんな感じかな


・・・中略・・・
<input id="url1" type="hidden" name="url1" value="{{$form_values['url1']}}">
・・・中略・・・

検証していないので、動かないかも。
それとbladeの部分にバリデーションエラーで戻った時に入力値を設定する記述も必要になると思います。

*json_encode, json_decodeの記述を削除しました。

1Like

Comments

  1. @rarala2020

    Questioner

    ありがとうございます!助かります。参考にさせていただき、試してみます!

Your answer might help someone💌