Secara default filter pada GridView menggunakan textfield. Akan tetapi ada kalanya pada beberapa kasus diperlukan filter pada GridView dengan menggunakan dropdownlist. Contohnya, untuk memfilter nilai dengan tipe boolean (Yes dan No) akan lebih baik jika kita menggunakan dropdownlist dari pada textfield, hal ini akan mempermudah pengguna melakukan filter.
Pada artikel ini, akan di contohkan bagaimana cara pembuatan filter menggunakan dropdown list pada GridView Yii 2.
Misalkan kita memiliki GridView dengan kode berikut :
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'name', 'parent_id', 'is_active:boolean', ['class' => 'yii\grid\ActionColumn'], ], ]) ?>
Dengan kode di atas, akan menghasilkan GridView seperti ini :
Bisa kita lihat, secara default input filter pada GridView merupakan textfield. Dalam kasus ini, misalkan kita memerlukan filter berupa dropdown list untuk kolom is_active dan parent_id. Untuk membuatnya kita perlu memodifikasi kode GridView di atas dengan mengatur property filter dengan nilai array.
Contoh :
'columns' => [ ['class' => 'yii\grid\SerialColumn'], // is_active, [ 'attribute' => 'is_active', 'format' => 'boolean', 'filter' => [1 => 'Yes', 2 => 'No'] ], ],
Dengan menambahkan property filter dengan array, input filter pada kolom is_active akan berubah menjadi dropdown list.
Pertanyaan selanjutnya, bagaimana jika nilai pada dropdown list kita ambil dari database. Pada dasarnya caranya sama saja dengan contoh sebelumnya, hanya saja kita perlu mengambil data dari database yang kemudian kita petakan kedalam sebuah array yang sesuai.
Contoh :
'columns' => [ ['class' => 'yii\grid\SerialColumn'], [ 'attribute' => 'parent_id', 'filter' => ArrayHelper::map(Category::find()->all(), 'id', 'name') ], ],
Dengan perubahan kode diatas akan dihasilkan GridView seperti ini :
0 comment
No comments associated with this article