Membuat Pagination dan Sorting Dengan Yii Framework - Pagination adalah teknik untuk menampilkan data di mana data yang akan di tampilkan banyak bisa menjadi terbagi - bagi menjadi beberapa halaman sehingga mempermudah user. Bayangkan jika anda memiliki 500 data dalam tabel yang akan di tampilkan dan anda tidak menggunakan pagination maka sudah pasti hasil tampilannya akan menjadi panjang sekali dan juga mempersulit kita untuk melihatnya karna harus menscrollnya terlebih dahulu, terlebih lagi jika koneksi internet yang tidak mendukung dan harus meload 500 data pastinya akan memakan waktu lama.
Baca juga : Cara Membuat Data Validation di Yii Framework
Baca juga : Cara Membuat Data Validation di Yii Framework
Dengan Yii Framework kita bisa melakukan pagination dengan CDbCriteria, dengan contoh penulisan script seperti berikut :
$pages=new CPagination($count);
$pages->pageSize=$limit;
$pages->applyLimit($criteria);
$count = Jumlah data dalam tabel anda
$limit = Jumlah data yang akan ditampilkan per page
Langsung saja kita mulai prakteknya Membuat Pagination dan Sorting Dengan Yii Framework .Jika anda belum pernah membuat databasenya bisa anda lihat Di Sini dan Jika anda belum menginstal Yii Di localhost anda dapat melihatnya Di Sini.
1. Controller
Buka kembali file BukuController.php anda dalam file Protected/controller kemudian ubah sedikit fungsi index anda menjadi seperti ini :public function actionIndex(){ $criteria= new CDbCriteria(); $model = new buku(); $count = $model->count($criteria); $pages=new CPagination($count); $pages->pageSize=5; $pages->applyLimit($criteria); $sort=new CSort('buku'); $sort->attributes=array('id','judul','penulis','id_kategori'); $sort->applyOrder($criteria); $data=$model->findAll($criteria); $this->render('index',array('data'=>$data,'pages'=>$pages,'sort'=>$sort)); }
Maka sekarang script BukuController.php anda selengkapnya menjadi seperti ini :
<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * Description of BukuController * * @author Jin Toples */ class BukuController extends Controller { //put your code here public $layout='column1'; const INDEX = 'index'; //function create public function actionCreate(){ $model=new buku; $k_model = new kategori; if(isset($_POST['buku'])){ $model->judul = $_POST['buku']['judul']; $model->penulis = $_POST['buku']['penulis']; $model->id_kategori= $_POST['buku']['id_kategori']; if($model->save()){ Yii::app()->user->setFlash('success', 'Data berhasil di simpan'); $this->redirect(array('index')); } } $this->render('create',array('model'=>$model,'k_model'=>$k_model)); } //function index ( read ) public function actionIndex(){ $criteria= new CDbCriteria(); $model = new buku(); $count = $model->count($criteria); $pages=new CPagination($count); $pages->pageSize=5; $pages->applyLimit($criteria); $sort=new CSort('buku'); $sort->attributes=array('id','judul','penulis','id_kategori'); $sort->applyOrder($criteria); $data=$model->findAll($criteria); $this->render('index',array('data'=>$data,'pages'=>$pages,'sort'=>$sort)); } //function update public function actionUpdate($id){ $data=new buku; $k_model = new kategori; $model=$data->findByPk($id); if(isset($_POST['buku'])){ $model->judul=$_POST['buku']['judul']; $model->penulis=$_POST['buku']['penulis']; $model->id_kategori= $_POST['buku']['id_kategori']; if($model->save()){ $this->redirect(array('index')); } } $this->render('update',array('model'=>$model,'k_model'=>$k_model)); } //function delete public function actionDelete($id){ $model = new buku; if($model->deleteByPk($id)){ $this->redirect(array(self::INDEX)); }else{ throw new CHttpException(404,'Data yang di minta tidak tersedia'); } } function actionKriteria(){ $criteria = new CDbCriteria(array('select'=>'*','condition'=>'id="2"')); $data = new buku; $model = $data->findAll($criteria); $this->render('kriteria',array('data'=>$model)); } } ?>
Penjelasan :
$count = $model->count($criteria);
Untuk menghitung semua data yang ada
$pages=new CPagination($count);
$pages->pageSize=5;
$pages->applyLimit($criteria);
$count = $model->count($criteria);
Untuk menghitung semua data yang ada
$pages=new CPagination($count);
$pages->pageSize=5;
$pages->applyLimit($criteria);
2. View
Sekarang ubah file index.php anda yang berada dalam direktori Protected/view/buku menjadi seperti ini :<?php foreach (Yii::app()->user->getFlashes() as $key=>$message){ ?> <div class="flash-<?php echo $key; ?> "><?php echo $message; ?></div> <?php } ?> <?php echo CHtml::link('Tambah Buku', array('create')); echo " | "; echo CHtml::link('Tambah Kategori', array('kategori/create')); ?> <div style="float:right;"> <?php $this->widget('CLinkPager', Array('pages'=>$pages)); ?> </div> <br><br> <table style="border-collapse: collapse; border: solid 1px #000; " border="1"> <tr sytle="border:1px solid"> <th><?php echo $sort->link('id'); ?></th> <th><?php echo $sort->link('judul'); ?></th> <th><?php echo $sort->link('penulis'); ?></th> <th><?php echo $sort->link('id_kategori'); ?></th> <th>Aksi</th> </tr> <?php foreach ($data as $model): ?> <tr> <td><?php echo $model->id; ?></td> <td><?php echo $model->judul; ?></td> <td><?php echo $model->penulis; ?></td> <td><?php echo $model->kategori->nama_kategori; ?></td> <td><?php echo CHtml::link(CHtml::encode('Update'), array('update', 'id'=>$model->id)); ?> | <?php echo CHtml::link(CHtml::encode('Delete'), array('delete', 'id'=>$model->id));?> </td> </tr> <?php endforeach; ?> </table>
<?php $this->widget('CLinkPager', Array('pages'=>$pages)); ?>
Kita menggunakan widget CLinkPager untuk menampilkan per page atau halamannya.
Untuk melihat hasilnya, ketikan di url browser :
http://localhost/Belajar_Yii/website/index.php?r=buku
*notes kode yang berwarna merah adalah direktori folder Yii Framework anda di localhost.
Sekarang coba anda klik NEXT maka akan berpindah ke page selanjutya, Selanjutnya coba anda klik ID/Judul Buku/Penulis Buku/Id Kategori maka sistem akan otomatis mengurutkannya secara Ascending dan Descending.
Membuat Pagination dan Sorting Dengan Yii Framework sekarang sudah selesai, baca juga tutorial belajar Yii Framework lainnya.
Membuat Pagination dan Sorting Dengan Yii Framework sekarang sudah selesai, baca juga tutorial belajar Yii Framework lainnya.
Wah makasih banyak sob ilmunya :)
ReplyDelete