
Updated: 20 Mei 2014
Akhirnya serial tutorial CakePHP ini bisa saya lanjutkan. Mohon maaf lama nunggu tutorial CakePHP ini soalnya saya juga membuat tutorial-tutorial yang lainnya. Untuk melihat tutorial-tutorial saya, silakan klik #tutorial-cheyuz. Selain itu, kerjaan-kerjaan lain sangat menumpuk di to do list saya, hehe.. Jadi mohon maklum.
Ok, untuk tutorial pada part III ini sesuai janji saya kita akan membuat Pagination dan Sorting untuk data yang akan ditampilkan. Dengan menggunakan CakePHP, kita tidak "dikasih" ribet dalam pembuatan dua makhluk ini. Bagi yang sudah mempelajari menggunakan framework lain, seperti Codeigniter maupun framework lainnya, tentu sudah tidak asing lagi dengan dua istilah ini. Bagi yang belum tahu, pagination adalah suatu "page number" pada halaman website, lengkap dengan nomor halaman, tombol previous, dan tombol next. Simpelnya, coba kunjungi Google, kemudian cari sesuatu, nah di situ terdapat page number di bagian bawah.
Kita akan melanjutkan tutorial dari aplikasi yang pernah dibuat sebelumnya, yang terdapat pada Tutorial CakePHP Dasar Part II. Oh iya, sekarang level tutorial ini sudah masuk ke dalam level "Newbie", hehe...
Sebelum pagination dibuat, tambahkan data pada article kamu sebanyak mungkin pada url: http://localhost/blogku/artikel/tambah. Dimisalkan di sini kita membuat 10 data.
Pagination
Untuk membuat sebuah pagination pada CakePHP, kita harus mendefinisikan batasan (limit) untuk setiap list data yang ditampilkan. Caranya adalah dengan menambahkan kode berikut pada controller:
$this->paginate = array( 'limit' => 3 );
Arti kode di atas yaitu definisikan batasan untuk data yang ditampilkan sebanyak 3 data.
Kemudian, setelah itu masih di controller yang sama, di bawah kode tersebut tambahkan kode berikut:
$data = $this->paginate('NamaModel');
Dengan menggunakan kode tersebut maka isi dari $data adalah model "NamaModel" dengan memakai pagination.
Kita implementasikan pada controller ArtikelController.php yang sebelumnya sudah dibuat, pastikan kode pada function index() adalah sebagai berikut:
function index() { $artikel = $this->Artikel->find('all'); $this->set('artikel', $artikel); }
Nah, sebelum variable $artikel didefinisikan, kita akan membuat 2 kode di atas untuk dibuat di dalam function index tersebut. Dan karena kita akan menggunakan pagination, maka kode $artikel = $this->Artikel->find('all'); akan dihapus. Kodenya akan berubah menjadi seperti ini:
function index() { $this->paginate = array( 'limit' => 3 ); $artikel = $this->paginate('Artikel'); $this->set('artikel', $artikel); }
Untuk setting pada controller sudah selesai, selanjutnya kita akan memodifikasi file view, yaitu pada file /View/Article/index.ctp. Tambahkan3 baris kode berikut setelah tag </table>.
<div class="paging"> <?php echo $this->Paginator->prev( ' < Sebelumnya', array(), null, array('class' => 'prev disabled') ); echo $this->Paginator->numbers(array('separator' => '')); echo $this->Paginator->next( 'Selanjutnya >', array(), null, array('class' => 'next disabled') ); ?> </div>
Catatan:
Pada CakePHP versi terbaru, helper Paginator secara default sudah diload oleh CakePHP. Jika misalnya Paginator undefined, maka kamu tinggal load helper Paginator dengan cara menambahkan kode:
public $helpers = array('Paginator');
Disimpan di dalam controller, tetapi di luar function, karena $helpers adalah properti/atribut dari class Controller.
Sorting
Sorting adalah teknik pengurutan data di dalam view supaya data dapat ditampilkan berdasarkan urutan tertentu (order). Cara memperlakukan sorting yaitu dengan cara mengklik nama field di setiap kolom data. Membuat Sorter pada CakePHP sangat sangat mudah, karena kita menggunakan helper Paginator yang sudah kita pakai sebelumnya. Langsung saja, kita buka file /View/Article/index.ctp, kemudian edit di setiap judul kolom pada table yang asalnya seperti ini:
<thead> <tr> <th>ID</th> <th>Judul</th> <th>Konten</th> <th>Tanggal Dibuat</th> <th>Aksi</th> </tr> </thead>
Menjadi seperti berikut:
<thead> <tr> <th><?php echo $this->Paginator->sort('id','ID'); ?></th> <th><?php echo $this->Paginator->sort('judul','Judul'); ?></th> <th><?php echo $this->Paginator->sort('konten','Konten'); ?></th> <th><?php echo $this->Paginator->sort('created','Tanggal Dibuat'); ?></th> <th>Aksi</th> </tr> </thead>
Function sort() pada helper Paginator berfungsi untuk mengubah nama field biasa menjadi sebuah sorter. Di dalamnya terdapat 2 buah argumen/parameter, yaitu nama field dan label. Setelah kita refresh, maka table akan langsung bisa diurutkan berdasarkan Judul, Konten, maupun Tanggal Dibuat. Caranya adalah dengan mengklik teks tersebut
Selamat mencoba
Stand By With Me,
cheyuz@jagocoding.com