Używam Eloquent razem z klasą Pagination Laravel 4.
Problem: Jeśli w adresie URL znajdują się parametry GET, np .: http://site.com/users?gender=female&body=hot
, utworzone łącza do stronicowania zawierają tylko page
parametr i nic więcej.
Szablon ostrza
{{ $users->link() }}
Jest ->append()
do tego funkcja, ale jeśli nie wiemy, ile jest parametrów GET, jak możemy użyć append()
innych parametrów GET w linkach podzielonych na strony bez całego kawałka if
kodu psującego nasz szablon blade?
appends
, nieappend
. Prawidłowy łańcuch byłby podobny do$query->appends($foo)->links();
$query->appends(Input::except('page'))->links();
działa lepiej. W przeciwnym razie zmienna strony nie aktualizowała się po kliknięciu strony. Laravel 4.1.24.{!! $myItems->appends(Input::except('page'))->render() !!}
Myślę, że powinieneś użyć tego kodu w Laravel 5. Również to zadziała nie tylko z parametrem,
page
ale także z innymi parametrami:Osobiście staram się unikać używania
Facades
jak najwięcej. Korzystanie z globalnych funkcji pomocniczych jest mniej kodowe i bardziej eleganckie.AKTUALIZACJA:
Nie używaj
Input
Fasady, ponieważ jest przestarzała w Laravel v6 +źródło
except('page')
tego rozwiązania.Należy pamiętać o tym
Input::all()
, że będzie on zawierał poprzednie?page=
wartości na każdej otwartej stronie!na przykład, jeśli jesteś w
?page=1
i otworzysz następną stronę, otworzy się?page=1&page=2
Więc ostatnia strona wartości będzie stroną, którą widzisz! nie stronę, którą chcesz zobaczyć
Rozwiązanie: użyj
Input::except(array('page'))
źródło
Możesz użyć
Przykład w kontrolerze:
Przykład w widoku:
źródło
Nie,
append()
aleappends()
prawidłowa odpowiedź brzmi:źródło
LARAVEL 5
Widok musi zawierać coś takiego:
{!! $myItems->appends(Input::except('page'))->render() !!}
źródło
Użyj tej konstrukcji, aby zachować wszystkie parametry wejściowe oprócz strony
Czemu?
1) usuwasz wszystko, co dodało do takiej prośby
2) nie potrzebujesz $ request jako parametru wejściowego dla funkcji
3) wykluczasz „stronę”
PS) i działa z Laravel 5.1
źródło
Uwzględnij to na swojej stronie widoku
źródło
dla kogo w laravel 5 lub większej w ostrzu:
możesz otrzymać przekazany przedmiot za pomocą
przetestuj to z
musisz dostać $ coś wartościowego
źródło
Laravel 7.x dodał nową metodę do paginatora:
Możesz więc używać go tak:
Dla laravel poniżej 7.x użyj:
źródło
Przekaż również numer strony do paginacji. Coś takiego
źródło