145 votes

Les liens de la pagination de Laravel n'incluent pas les autres paramètres GET

J'utilise Eloquent avec la classe Pagination de Laravel 4.

Problème : Lorsqu'il y a des paramètres GET dans l'URL, par exemple : http://site.com/users?gender=female&body=hot les liens de pagination produits ne contiennent que le page et rien d'autre.

Modèle de lame

{{ $users->link() }}

Il y a un ->append() pour cela, mais lorsque nous ne savons pas combien de paramètres GET il y a, comment utiliser la fonction append() d'inclure les autres paramètres GET dans les liens paginés sans tout un morceau de if qui perturbe notre modèle de lame ?

2voto

Mostafa Norzade Points 477

Dans Laravel 7.x, vous pouvez l'utiliser comme suit :

{{ $results->withQueryString()->links() }}

0voto

Cengkuru Michael Points 1980

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

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

0voto

Miraj Khandaker Points 230

Dans votre contrôleur après la pagination ajoutez withQueryString() comme ci-dessous

$post = Post::paginate(10)->withQueryString();

-1voto

Max Stevens Points 91

De nombreuses solutions mentionnées ici mentionnent l'utilisation de Input ...

Input a été supprimé dans Laravel 6, 7, 8

Utilisez Request à la place.

Voici la déclaration de lame qui a fonctionné dans mon projet Laravel 8 :

{{$data->appends(Request::except('page'))->links()}}

$data est l'objet PHP contenant les données paginées.

Merci à Alexandre Danault qui l'a souligné dans ce commentaire .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X