Topik sebelumnya sudah dibahas bagaimana mengubah filter di CGridView menjadi drop down box. Penulis kali ini akan mengajak Anda untuk menelusuri lebih dalam sejauh mana kita dapat mengutak-atik filter pada CGridView.
Memasang Tulisan
Kita bisa menggantikan textbox yang ada di filter menjadi tulisan biasa. Caranya sangat gampang, kita cukup langsung menulis tulisan pada atribut filter:
$this->widget('zii.widgets.grid.CGridView', array( 'id'=>'karyawan-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( ... array( 'name'=>'jenis_kelamin', 'filter'=>'Tulisan Apa Saja', ), ... ) ));
Satu hal yang harus diketahui adalah, jika kita memasang tulisan di filter, maka tidak bisa melakukan pencarian lagi. Memasang tulisan murni hanya untuk tampilan.
Memasang Checkbox
Untuk memasang checkbox, kita cukup menulis sintaks CHtml::checkBox(). Tetapi supaya dapat memiliki fungsi pencarian, kita perlu mengatur nilai argumen pada checkbox kita. Supaya lebih gampang mengerti bagaimana memasang checkbox, maka kita mengambil sebuah contoh kasus sederhana.
Misalkan kita memiliki sebuah tabel karyawan. Salah satu informasi karyawan yang ditampilkan adalah apakah status karyawan bersangkutan adalah pegawai tetap atau bukan (jadi nilainya antara ya atau tidak). Maka dalam kasus ini, checkbox bisa membantu kita. Berikut merupakan koding lengkapnya:
$this->widget('zii.widgets.grid.CGridView', array( 'id'=>'karyawan-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( ... array( 'name'=>'pegawai_tetap', 'filter'=>CHtml::checkBox( 'Karyawan[pegawai_tetap]', $model->pegawai_tetap, array('value'=>1)), ), ... ) ));
Ketika checkbox dicentang maka hanya karyawan yang nilai “pegawai_tetap” 1 yang akan muncul. Jika ingin memfilter nilai lain, cukup gantikan angka “1″ di bagian “value” menjadi nilai lain.
Memasang Link
Seperti yang Anda lihat di contoh pemasangan checkbox pada CGridView, kita dapat memasang koding di dalam atribut filter milik CGridView. Jadi, tentu saja kita juga dapat memasang hyperlink di filter.
array( 'name'=>'deskripsi', 'filter'=>CHtml::link('Lihat Selengkapnya', array('karyawan/detail')), ),
Dengan fleksibilitas tinggi yang ditawarkan Yii Framework, kita bisa bereksperimen di dalam baris filter. Sejauh ini yang terpikirkan oleh penulis (dan bermanfaat) adalah memasang checkbox. Tetapi dengan kreativitas masing-masing seharusnya bisa ditemukan lebih banyak hal lagi yang dapat dipasang di baris filter.
Apa ide Anda?
Gan, gimana caranya kl utk memasang filter, tetapi filter tsb dihasilkan dari table relation, karena secara default filter yg ada utk kolom relasi tidak ditampilkan. Misal, ada model User dan Group. Nah, di CGridView ingin ditampilan user A itu misalnya group Admin, karena biasanya yg ditampilkan adalah group_id nya, bukan group_name nya. Kalau case nya spt itu, bagaimana gan ?
[...] sumber [...]