Saya menggunakan Eloquent bersama dengan kelas Pagination Laravel 4.
Masalah: Ketika ada beberapa parameter GET di URL, misalnya http://site.com/users?gender=female&body=hot
:, link pagination yang dihasilkan hanya berisi page
parameter tersebut dan tidak ada yang lain.
Template Pisau
{{ $users->link() }}
Ada ->append()
fungsi untuk ini, tetapi ketika kita tidak tahu berapa banyak parameter GET yang ada, bagaimana kita dapat menggunakan append()
untuk menyertakan parameter GET lainnya di tautan paginasi tanpa seluruh potongan if
kode yang mengacaukan template blade kita?
appends
, bukanappend
. Rangkaian yang benar akan menjadi seperti$query->appends($foo)->links();
$query->appends(Input::except('page'))->links();
bekerja lebih baik. Jika tidak, variabel halaman tidak diperbarui saat Anda mengklik halaman. Laravel 4.1.24.{!! $myItems->appends(Input::except('page'))->render() !!}
Saya pikir Anda harus menggunakan kode ini di Laravel 5. Ini juga akan bekerja tidak hanya dengan parameter
page
tetapi juga dengan parameter lain:Secara pribadi, saya mencoba menghindari penggunaan
Facades
sebanyak yang saya bisa. Menggunakan fungsi pembantu global lebih sedikit kode dan lebih elegan.MEMPERBARUI:
Jangan gunakan
Input
Facade karena sudah tidak digunakan lagi di Laravel v6 +sumber
except('page')
solusi ini.Sadarilah dari
Input::all()
, itu akan Sertakan sebelumnya?page=
nilai lagi dan lagi di setiap halaman Anda membuka!misalnya jika Anda masuk
?page=1
dan Anda membuka halaman berikutnya, itu akan terbuka?page=1&page=2
Jadi halaman nilai terakhir yang diambil adalah halaman yang Anda lihat! bukan halaman yang ingin Anda lihat
Solusi: gunakan
Input::except(array('page'))
sumber
Anda bisa menggunakan
Contoh di Controller:
Contoh di View:
sumber
Bukan
append()
Tapiappends()
Jadi, jawaban yang benar adalah:sumber
LARAVEL 5
Tampilan harus berisi sesuatu seperti:
{!! $myItems->appends(Input::except('page'))->render() !!}
sumber
Gunakan konstruksi ini, untuk menyimpan semua input params kecuali halaman
Mengapa?
1) Anda menghapus semua yang ditambahkan ke permintaan seperti itu
2) Anda tidak perlu $ request sebagai parameter input untuk fungsi tersebut
3) Anda mengecualikan "halaman"
PS) dan berfungsi untuk Laravel 5.1
sumber
Sertakan Ini Di Halaman Tampilan Anda
sumber
untuk yang di laravel 5 atau lebih di bilah:
Anda bisa mendapatkan item yang lulus dengan
mengujinya dengan
Anda harus mendapatkan nilai $ sesuatu
sumber
Laravel 7.x telah menambahkan metode baru ke paginator:
Jadi Anda bisa menggunakannya seperti:
Untuk laravel di bawah 7.x gunakan:
sumber
Berikan juga nomor halaman untuk penomoran halaman. Sesuatu seperti ini
sumber