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
paramètre et rien d'autre.
Modèle de lame
{{ $users->link() }}
Il y a une ->append()
fonction pour cela, mais quand nous ne savons pas combien de paramètres GET y a-t-il, comment pouvons-nous utiliser append()
pour inclure les autres paramètres GET dans les liens paginés sans que tout un morceau de if
code ne gâche notre modèle de lame?
appends
, nonappend
. Le chaînage correct serait quelque chose comme$query->appends($foo)->links();
$query->appends(Input::except('page'))->links();
fonctionnait mieux. Sinon, la variable de page ne s'est pas mise à jour lorsque vous avez cliqué sur une page. Laravel 4.1.24.{!! $myItems->appends(Input::except('page'))->render() !!}
Je pense que vous devriez utiliser ce code dans Laravel 5. De plus, cela fonctionnera non seulement avec le paramètre,
page
mais aussi avec tout autre paramètre:Personnellement, j'essaie d'éviter d'en utiliser
Facades
autant que je peux. L'utilisation des fonctions d'assistance globales est moins de code et beaucoup plus élégante.METTRE À JOUR:
N'utilisez pas
Input
Facade car il est obsolète dans Laravel v6 +la source
except('page')
cette solution.Soyez conscient du
Input::all()
, il inclura les?page=
valeurs précédentes encore et encore dans chaque page que vous ouvrez!par exemple, si vous êtes
?page=1
et que vous ouvrez la page suivante, elle s'ouvrira.?page=1&page=2
Ainsi, la dernière page de valeur prise sera la page que vous voyez! pas la page que vous voulez voir
Solution: utiliser
Input::except(array('page'))
la source
Vous pourriez utiliser
Exemple dans le contrôleur:
Exemple dans la vue:
la source
Pas
append()
maisappends()
donc, la bonne réponse est:la source
LARAVEL 5
La vue doit contenir quelque chose comme:
{!! $myItems->appends(Input::except('page'))->render() !!}
la source
Utilisez cette construction, pour conserver tous les paramètres d'entrée sauf la page
Pourquoi?
1) vous supprimez tout ce qui a ajouté à la demande comme ça
2) vous n'avez pas besoin de $ request comme paramètre d'entrée pour la fonction
3) vous excluez "page"
PS) et cela fonctionne pour Laravel 5.1
la source
Inclure ceci dans votre page d'affichage
la source
pour qui un en laravel 5 ou plus en lame:
vous pouvez obtenir l'article passé avec
tester avec
vous devez obtenir une valeur de $ quelque chose
la source
Laravel 7.x a ajouté une nouvelle méthode à paginator:
Vous pouvez donc l'utiliser comme:
Pour laravel en dessous de 7.x utiliser:
la source
Transmettez également le numéro de page pour la pagination. Quelque chose comme ça
la source