Yii 2 - Filter dropdown list pada GridView

alfa6661
- July 01, 2015
0 (0 votes)
Rate :
Membuat filter menggunakan dropdown list pada GridView Yii Framework 2

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 :

Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter

– Eric S. Raymond

Have a better explanation?

If you have comments about this post. Please write your comments below

No comments associated with this article