Laravel la Pagination des liens ne pas, y compris d'autres paramètres GET
Je suis en utilisant Éloquent avec Laravel 4 la Pagination de la classe.
Problème: Lorsqu'il y a certains paramètres GET dans l'URL, par exemple: http://site.com/users?gender=female&body=hot
, la pagination des liens produits ne contiennent que de la page
paramètre et rien d'autre.
Lame Modèle
{{ $users->link() }}
Il y a un ->append()
fonction de cela, mais lorsque nous ne savons pas combien d'OBTENIR les paramètres sont là, comment pouvons-nous utiliser append()
pour inclure d'autres paramètres dans la pagination des liens sans un gros morceau de if
code gâcher notre lame de modèle?
Vous devez vous connecter pour publier un commentaire.
EDIT: Connor commentaire de Mehdi réponse sont nécessaires pour faire ce travail. Merci à tous deux pour leurs précisions.
->appends()
peut accepter un tableau comme paramètre, vous pouvez passerInput::except('page')
, cela devrait faire l'affaire.Exemple:
appends
, pasappend
. Le bon chaînage serait quelque chose comme$query->appends($foo)->links();
$query->appends(Input::except('page'))->links();
a mieux fonctionné. Sinon, la page de la variable n'est pas mise à jour lorsque vous avez cliqué sur une page. Laravel 4.1.24.{!! $myItems->appends(Input::except('page'))->render() !!}
{!! with(new \App\Presenters\CustomPagerPresenter($results->appends(Input::except('page'))))->render() !!}
Je pense que vous devriez utiliser ce code dans Laravel 5 qui Laracasts le mentionne.
Aussi cela ne fonctionne pas uniquement avec le paramètre
page
mais aussi avec tout autre paramètre(s):Personnellement, j'essaie d'éviter d'utiliser
Façades
autant que je le peux. À l'aide de fonctions d'assistance global est moins de code et beaucoup d'élégance.except('page')
avec cette solution.Être conscient de la
Input::all()
, il comprendra la précédente?page=
valeurs encore et encore, à chaque page, vous ouvrez !par exemple, si vous êtes dans
?page=1
et vous ouvrez la page suivante, il va ouvrir?page=1&page=2
la dernière valeur page sera la page, vous verrez ! pas la page que vous souhaitez voir
Solution : utiliser
Input::except(array('page'))
Pas
append()
maisappends()
Donc, la bonne réponse est:
Vous pouvez utiliser
Exemple dans le Contrôleur:
Exemple dans la Vue:
LARAVEL 5
La vue doit contenir quelque chose comme:
{!! $myItems->appends(Input::except('page'))->render() !!}
Utiliser cette construction, pour garder l'entrée de tous les params mais la page
Pourquoi?
1) vous démonter tout ce qui a ajouté à la demande comme ça
2) vous n'avez pas besoin de demander comme paramètre d'entrée pour la fonction
3) vous êtes à l'exclusion de "page"
PS) et il fonctionne pour Laravel 5.1
De Les Inclure Dans Votre Vue
Page
pour qui un dans laravel 5.3
de la lame:
vous pouvez obtenir de l'élément passé avec
tester avec
vous devez obtenir $quelque chose de valeur
Passer le numéro de page de la pagination ainsi. Quelque chose comme ceci
HTML: