Liens Laravel Pagination n’incluant pas d’autres parameters GET

J’utilise Eloquent avec le cours de Pagination de Laravel 4.

Problème: Lorsque l’URL contient des parameters GET, par exemple: http://site.com/users?gender=female&body=hot , les liens de pagination créés contiennent uniquement le paramètre de la page et rien d’autre.

Modèle de lame

 {{ $users->link() }} 

Il y a une fonction ->append() pour cela, mais quand on ne sait pas combien de parameters GET il y a, comment peut-on utiliser append() pour inclure les autres parameters GET dans les liens paginés sans tout un morceau de if code gâcher notre modèle de lame?

EDIT: Le commentaire de Connor avec la réponse de Mehdi est nécessaire pour que cela fonctionne. Merci aux deux pour leurs clarifications.

->appends() peut accepter un tableau comme paramètre, vous pourriez passer Input::except('page') , cela devrait faire l’affaire.

Exemple:

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

Je pense que vous devriez utiliser ce code dans Laravel 5 dont Laracasts le mentionne. En outre, cela fonctionnera non seulement avec la page parameters mais également avec tout autre paramètre:

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

Personnellement, j’essaie d’éviter d’utiliser Fecades autant que possible. L’utilisation des fonctions d’assistance globales est moins codée et beaucoup plus élégante.

Soyez conscient de la valeur Input::all() , elle inclura encore et encore les valeurs ?page= précédentes dans chaque page que vous ouvrez!
Par exemple, si vous êtes dans ?page=1 et que vous ouvrez la page suivante, celle-ci s’ouvrira ?page=1&page=2
La dernière page de valeur sera donc la page que vous voyez! pas la page que vous voulez voir

Solution: utilisez Input::except(array('page'))

Non append() mais appends() Donc, la bonne réponse est:

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

LARAVEL 5

La vue doit contenir quelque chose comme:

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

Utilisez cette construction pour conserver tous les parameters d’entrée, mais la page

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

Pourquoi?

1) vous supprimez tout ce qui a ajouté à la demande comme ça

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

2) vous n’avez pas besoin de $ request comme paramètre d’entrée pour la fonction

3) vous excluez “page”

PS) et ça marche pour Laravel 5.1

Vous pourriez utiliser

 ->appends(request()->query()) 

Exemple dans le contrôleur:

 $users = User::search()->order()->with('type:id,name') ->paginate(30) ->appends(request()->query()); return view('users.index', compact('users')); 

Exemple dans la vue:

 {{ $users->appends(request()->query())->links() }} 

Inclure ceci dans votre page de vue

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

Passez également le numéro de page pour la pagination. Quelque chose comme ça

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

pour qui on en laravel 5.3 en lame:

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

vous pouvez obtenir l’article passé avec

 $passed_item=$request->id; 

le tester avec

 dd($passed_item); 

vous devez obtenir une valeur de $