GridView si es 1 Mostrar Activo

Que tal amigos

Te una tabla con un campo estado y en mi gridview quiero mostras si el valor del campo es 1 mostrar Activo y si el valor del campo es 0 mostrar inactivo, utilizo yii2




GridView::widget([

        'dataProvider' => $dataProvider,

        'filterModel' => $searchModel,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

            'codigo',

            'nombre',

            'estado',

          

            ['class' => 'yii\grid\ActionColumn'],

        ],

    ]); ?>

 

Bueno hay varias forma de hacer eso, primero si quieres hacerlo muy pero muy rápido coloca:


GridView::widget([

        'dataProvider' => $dataProvider,

        'filterModel' => $searchModel,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

            'codigo',

            'nombre',

            'estado:boolean',

          

            ['class' => 'yii\grid\ActionColumn'],

        ],

    ]); ?>

esto te colocará "yes" si el valor es uno y "no" si el valor es 0, si la aplicación tiene fijado el lenguajes en español debería

ser "si" y "no" respectivamente, lo que faltaría es en el getAttributeLabels() de tu modelo colocar para el atributo estado

que retorne "Activo" o la palabra que quieras. el resultado serí algo como

Activo

si

para hacerlo tal cual como quieres allí sin cambiar más nada seria algo como:


GridView::widget([

        'dataProvider' => $dataProvider,

        'filterModel' => $searchModel,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

            'codigo',

            'nombre',

            [        

         	'label' => 'Estado',

         	'value' => function($model){

                      return ($model->estado === 1)? 'Activo':'Inactivo

              }

            ],

          

            ['class' => 'yii\grid\ActionColumn'],

        ],

    ]); ?>

No he ejecutado el código pero la primera forma es como lo hago siempre, y la segunda debe funcionar, pero pude

haberme equivocado en alguna parte pero es la idea, revisa GridView

Gracias Bushi las dos formas me funcionaron a la perfección

Que bueno que fue útil. suerte entonces

Sé que ya pasó mucho tiempo pero justo estaba buscando esto así que lo dejo por si alguien lo necesita

[
                'attribute' => 'activo',
                'filter' => [0 => 'No', 1 => 'Yes'],
                'format'    => 'raw',
                'value' => function($searchModel) {
                    if ($searchModel->activo) {
                        return "<span class='glyphicon glyphicon-ok text-success'> activo</span>";
                    } else {
                        return "<span class='glyphicon glyphicon-remove text-danger'> inactivo</span>";
                    }
                }
            ],