検索フォームから検索結果に遷移した後、2ページ目以降も検索条件を引継ぎたい
### bladeのページネーション
前
{{$data->render()}}
後
{{$data->appends(request()->input())->render()}}
こう書いたんだが、2ページ目以降、一向反映されない。
何故だああああああ????
(※今日はbiz confortってコワーキングに行こうと思って、横浜元町まで来たら祝日でやってないじゃないか。。。何故だあああああ)
フラ〜とアクエリアス飲んで考えてたら、気が付いた。appendsは、パラメータを配列で渡すメソッドなので、検索フォームはGETメソッドでないと上手く動作しない
### 検索フォーム
前
{!! Form::open(['method'=>'POST', 'action'=>'HogeController@index']) !!} // 省略 {!! Form::close() !!}
後
{!! Form::open(['method'=>'GET', 'action'=>'HogeController@index']) !!} <input type="hidden" name="search" value="{{ rand() }}"> // 省略 {!! Form::close() !!}
Postメソッド時のControllerでの検索時の処理は、isMethod(‘post’)で判定していたが、Getメソッドの場合は、hiddenでname=”search”をcontrollerに送って、それで判定する事にした。
### Controller
前
if($request->isMethod('post')){ $inputs = $request->all(); $query = Data::query(); // 検索処理 省略 }
後
if($request->has('search')){ $inputs = $request->all(); $query = Data::query(); // 検索処理 省略 }
FORMはセキュリティ上、POSTメソッドしか使わないと考えてたが、ユーザ検索のページネーションの処理では、POSTメソッドではなくGETメソッドの方が都合が良い、ということを理解しました。