Pagination
Pagination adalah proses membagi konten web dan menampilkannya pada halaman terpisah (http://en.wikipedia.org/wiki/Pagination_(web)).
Sebagai contoh misalnya ada sebuah halaman yang berisi daftar koleksi musik yang jumlah totalnya mencapai 200 item. Jika ditampilkan semua item, maka halaman tersebut akan mejadi sangat panjang. Untuk memudahkan dalam melihat data, maka data tadi dipecah-pecah menjadi beberapa halaman di mana setiap halaman ditampilkan data dengan jumlah maksimal yang telah ditentukan. Dengan begitu dalam mengaksesnya menjadi list halaman 1, list halaman 2 list halaman 3 dst.
Inisialisasi
Sebelum digunakan library pagination harus diinisialisasi terlebih dahulu.
$this->pagination = new Resources\Pagination;
Contoh Penggunaan
Data yang diperlukan dalam menggunakan resource ini adalah:
- Total data
- Posisi halaman saat ini. Defaultnya adalah halaman 1.
- URL Controller yang menangani proses paging.
- Data yang akan ditampilkan.
Proses pagination sangat terkait dengan pengambilan data di database, berikut adalah contoh querey untuk paging di dalam model:
Berikut adalah contoh controller yang menangani pagination:
Sekarang kita buat bagian view untuk menampilkan data dan link pagination:
Selanjutnya akses alamat berikut untuk mendapatkan list halaman 1:
http://www.mysite.com/music/lists/
Halaman 2 alamatnya:
http://www.mysite.com/music/lists/2
Halaman 10 alamatnya:
http://www.mysite.com/music/lists/10
Options
showNumber
Jika tidak ingin menampilkan link-link berupa angka, set paramter ini menjadi false:
$this->pagination->setOption('showNumber', false);
showAll
Untuk menampilkan semua link-link angka, set parameter ini menjadi false:
$this->pagination->setOption('showAll', false);
noHref
Jika data dari link-linknya tidak ingin dibungkus oleh tag link (<a href), set parameter ini menjadi true:
$this->pagination->setOption('noHref', true);
Nilai variable pageLinks akan menghasilkan data array seperti berikut:
Array([link] => paging link [value] => paging value)
Cara membungkus menjadi link html:
prevText
String untuk previous misalnya "Sebelumnya".
$this->pagination->setOption('prevText', 'Sebelumnya');
nextText
String untuk next misalnya "Berikutnya".
$this->pagination->setOption('nextText', 'Berikutnya');
prevNext
Jika Anda tidak ingin menampilkan bagian Previous dan Next, set parameter di bawah menjadi false.
$this->pagination->setOption('prevNext', false);
groupSeparator
Pemisah antara blok angka yang satu dengan yang lainnya. contoh: 1 2 3 ... 22 23 24 ... 100 101 102
$this->pagination->setOption('groupSeparator', '...');
endSize
Berapa banyak jumlah angka yang ditampilkan di blok angka terakhir. Jika di set 2 maka hasilnya akan 1 2 ... 10 11 12 ... 100 101
$this->pagination->setOption('endSize', 1);
midSize
Jumlah angka sebelum dan sesudah angka paging saat ini. Jika di set 2 maka hasilnya akan 1 2 ... 9 10 [11] 12 13 ... 100 101
$this->pagination->setOption('midSize', 3);