web-dev-qa-db-ja.com

Laravel他のGETパラメーターを含まないページネーションリンク

EloquentをLaravel 4のページネーションクラスと一緒に使用しています。

問題: URLにGETパラメーターがある場合(例:http://site.com/users?gender=female&body=hot)、生成されるページネーションリンクにはpageパラメーターのみが含まれ、それ以外は何も含まれません。

ブレードテンプレート

{{ $users->link() }}

これには->append()関数がありますが、GETパラメーターの数がわからない場合、append()を使用して、ページ分割されたリンクに他のGETパラメーターを含めることができます。 ifコードがブレードテンプレートを台無しにしますか?

81
Nyxynyx

編集:コナーのMehdiの答えとのコメントは、この作業を行うために必要です。両方とも説明してくれてありがとう。

->appends()は配列をパラメーターとして受け入れることができます。Input::except('page')を渡すと、うまくいくはずです。

例:

return view('manage/users', [
    'users' => $users->appends(Input::except('page'))
]);
105

Laravel 5でこのコードを使用する必要があると思います。また、これはパラメーターpageだけでなく、他のパラメーターでも機能します。

$users->appends(request()->input())->links();

個人的には、できる限り Facades を使用しないようにしています。グローバルヘルパー関数を使用すると、コードが少なくなり、はるかにエレガントになります。

69
Hassan Azimi

気をつけて Input::all()の中で、開いた各ページに以前の?page=値が何度も含まれます!
たとえば、?page=1にいるときに次のページを開くと、?page=1&page=2が開きます
したがって、最後の値ページは、表示されるページになります!見たいページではない

解決策:Input::except(array('page'))を使用

39
Mehdi Maghrooni

append()ではなくappends()なので、正しい答えは次のとおりです。

{!! $records->appends(Input::except('page'))->links() !!}
28
Bald

使用できます

->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() }}
22

LARAVEL 5

ビューには次のようなものが含まれている必要があります。

{!! $myItems->appends(Input::except('page'))->render() !!}

11
ecairol

この構造を使用して、ページを除くすべての入力パラメーターを保持します

{!! $myItems->appends(Request::capture()->except('page'))->render() !!}

どうして?

1)そのようなリクエストに追加されたものをすべて削除します

  $request->request->add(['variable' => 123]);

2)関数の入力パラメーターとして$ requestは必要ありません

3)「ページ」を除外している

PS)Laravel 5.1で動作します

5

これを表示ページに含める

 $users->appends(Input::except('page'))
3
Siva Ganesh

ブレードのlaravel 5.3の誰に対して:

{{ $table->appends(['id' => $something ])->links() }}

渡されたアイテムを取得できます

$passed_item=$request->id;

でテストする

dd($passed_item);

$ somethingの値を取得する必要があります

2
Mostafa Asadi

ページネーションもページ番号を渡します。このようなもの

$currentPg = Input::get('page') ? Input::get('page') : '1';
    $boards = Cache::remember('boards'.$currentPg, 60, function(){ return WhatEverModel::paginate(15); });
0