Yii2 Yii Gridview在过滤记录时从界面显示/隐藏列

Yii2 Yii Gridview在过滤记录时从界面显示/隐藏列,yii2,yii-extensions,yii2-advanced-app,Yii2,Yii Extensions,Yii2 Advanced App,我正在使用YII Gridview,以便在筛选记录时显示/隐藏列 例如:如果姓名、城市、州和电话在列表中,我希望复选框显示/隐藏列表中的任何列,如电话、姓名。 请建议 提前感谢您可以使用gridview列字段的visible属性 <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ [

我正在使用YII Gridview,以便在筛选记录时显示/隐藏列 例如:如果姓名、城市、州和电话在列表中,我希望复选框显示/隐藏列表中的任何列,如电话、姓名。 请建议


提前感谢

您可以使用gridview列字段的visible属性

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'your_attribute1',
        ....
        [
            'label' => 'your_labe',
            'attribute_n' => 'your_attribute',
             'visible' => ( $your_condition == 'value_for_visible') 
        ],
        ......

您必须使用“可见”选项。只需传递条件,在该条件下,您需要显示该列。像这样:

 <?php echo GridView::widget( [
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    ['attribute'=>'your_column',
    'visible'=> if ( $data->field_name == "some_value" ) ? true : false,
    'value'=>function( $data ) {
        return !empty( $data->your_column ) ? $data->your_column : '0.5';
    },
    ]
    ] );?>


你试过什么吗?我可以用data table做,但想用Gridview做。我的意思是,展示你的努力。到目前为止你都试过了。