EloquentをLaravel 4のページネーションクラスと一緒に使用しています。
問題: URLにGETパラメーターがある場合(例:http://site.com/users?gender=female&body=hot
)、生成されるページネーションリンクにはpage
パラメーターのみが含まれ、それ以外は何も含まれません。
ブレードテンプレート
{{ $users->link() }}
これには->append()
関数がありますが、GETパラメーターの数がわからない場合、append()
を使用して、ページ分割されたリンクに他のGETパラメーターを含めることができます。 if
コードがブレードテンプレートを台無しにしますか?
編集:コナーのMehdiの答えとのコメントは、この作業を行うために必要です。両方とも説明してくれてありがとう。
->appends()
は配列をパラメーターとして受け入れることができます。Input::except('page')
を渡すと、うまくいくはずです。
例:
return view('manage/users', [
'users' => $users->appends(Input::except('page'))
]);
Laravel 5でこのコードを使用する必要があると思います。また、これはパラメーターpage
だけでなく、他のパラメーターでも機能します。
$users->appends(request()->input())->links();
個人的には、できる限り Facades
を使用しないようにしています。グローバルヘルパー関数を使用すると、コードが少なくなり、はるかにエレガントになります。
気をつけて Input::all()
の中で、開いた各ページに以前の?page=
値が何度も含まれます!
たとえば、?page=1
にいるときに次のページを開くと、?page=1&page=2
が開きます
したがって、最後の値ページは、表示されるページになります!見たいページではない
解決策:Input::except(array('page'))
を使用
append()
ではなくappends()
なので、正しい答えは次のとおりです。
{!! $records->appends(Input::except('page'))->links() !!}
使用できます
->appends(request()->query())
コントローラーの例:
$users = User::search()->order()->with('type:id,name')
->paginate(30)
->appends(request()->query());
return view('users.index', compact('users'));
ビューの例:
{{ $users->appends(request()->query())->links() }}
LARAVEL 5
ビューには次のようなものが含まれている必要があります。
{!! $myItems->appends(Input::except('page'))->render() !!}
この構造を使用して、ページを除くすべての入力パラメーターを保持します
{!! $myItems->appends(Request::capture()->except('page'))->render() !!}
どうして?
1)そのようなリクエストに追加されたものをすべて削除します
$request->request->add(['variable' => 123]);
2)関数の入力パラメーターとして$ requestは必要ありません
3)「ページ」を除外している
PS)Laravel 5.1で動作します
これを表示ページに含める
$users->appends(Input::except('page'))
ブレードのlaravel 5.3の誰に対して:
{{ $table->appends(['id' => $something ])->links() }}
渡されたアイテムを取得できます
$passed_item=$request->id;
でテストする
dd($passed_item);
$ somethingの値を取得する必要があります
ページネーションもページ番号を渡します。このようなもの
$currentPg = Input::get('page') ? Input::get('page') : '1';
$boards = Cache::remember('boards'.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });