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