我们知道Yii中的GridView组件是非常好用的。
某些情况要动态显示某列,这时候就要用到visible属性
'propString' => ['attribute' => 'propertyNamesStringV2','format' => 'raw', 'visible' => isset($_GET['pno']) ? true : false],
注意rowOptions。 根据文档他可以接收数组或匿名函数。将判断逻辑写到匿名函数里面。当满足就给当前行加个隐藏的class。相当于不显示。
给个例子,注意好像效率比较低,可以通过一次查询再判断。
<?=GridView::widget([ 'dataProvider' => $dataProvider, 'rowOptions' => function ($model, $key, $index, $grid){ if(!$res = OrderComment::findOne(['orderId' => $model->orderId, 'itemId' => $model->itemId ]) ){ return ['class' => 'hide']; } }, 'columns' => [ Order::getOrderViewMoreLink($dataProvider), //'order.addTime:datetime', $gridViewButtonsHad, ], ]);?>
帖一个列完整代码
<?php use yiihelpersHtml; use yiigridGridView; /* @var $this yiiwebView */ /* @var $dataProvider yiidataActiveDataProvider */ if(Yii::$app->request->url == '/user/staff' || isset($_GET['UserSearch']['sType'])){ $this->title = '员工管理'; }else{ $this->title = '用户管理'; } $this->params['breadcrumbs'][] = $this->title; $this->params['actionButtons'] = Html::a('添加用户', ['create'], ['class' => 'btn btn-success btn-sm',]); $gridViewButtons = [ 'class' => 'yiigridActionColumn', 'template' => '{view} {be-promoter} {update} {qrdown}', 'buttons' => [ 'view' => function($url, $model){ return Html::a('<i class="fa fa-eye"></i> 查看', $url, ['class' => 'btn btn-primary btn-sm']); }, 'be-promoter' => function($url, $model){ if(!empty($model->consumer)){ if($model->consumer->isPromoter()){ return Html::a('<i class="fa fa-edit"></i> 取消推广员', $url .'&isBe=0', [ 'class' => 'btn btn-danger btn-sm', 'data-confirm' => '该操作将清除所有推广积分和等级,确定取消吗?', 'data-method' => "post" ]); }else{ return Html::a('<i class="fa fa-edit"></i> 设置为推广员', $url .'&isBe=1', ['class' => 'btn btn-info btn-sm',] ); } } }, 'update' => function ($url, $model) { return Html::a('<i class="fa fa-edit"></i> 编辑', $url, ['class' => 'btn btn-default btn-sm']); }, 'qrdown' => function($url, $model){ if(!empty($model->consumer)){ if($model->consumer->isPromoter()){ return Html::a('下载二维码', $url .'&consumerId='.$model->consumer->id, [ 'class' => 'btn btn-success btn-sm', ]); } } }, ], ]; ?> <div class="user-index"> <?= $this->render('_search', ['model' => $searchModel, 'queryParams' => $queryParams]) ?> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ ['class' => 'yiigridSerialColumn'], [ 'label' => '头像LOGO', 'format' => ['image',['class' => 'thumbnail_image']], 'value' => 'avatarUrl', ], 'username', 'nickname', [ 'attribute' => 'position', 'visible' => Yii::$app->request->pathInfo == 'user/staff' ], [ 'label' => '积分', 'format' => 'html', 'value' => function ($model, $key, $index, $column){ $consumer = $model->consumer; if(empty($consumer->credit)) return 0; return Html::a($consumer->credit,['user/credit-detail','consumerId' => $consumer->id]); }, ], [ 'label' => '等级', 'attribute' => 'consumer.levelName' ], [ 'label' => '币', 'format' => 'html', 'value' => function ($model, $key, $index, $column){ $consumer = $model->consumer; if(empty($consumer->belovedCoin)) return 0; return Html::a($consumer->belovedCoin,['user/coin-detail','consumerId' => $consumer->id]); }, ], [ 'label' => '推广等级', 'attribute' => 'consumer.promotionLevel' ], [ 'label' => '推广积分', 'format' => 'html', 'value' => function ($model, $key, $index, $column){ $consumer = $model->consumer; if(empty($consumer->promotionPoint)) return 0; return Html::a($consumer->promotionPoint,['user/promotion-point-detail','consumerId' => $consumer->id]); }, ], [ 'label' => '推广链接', 'attribute' => 'consumer.promoterCode' ], 'mobile', 'email:email', // 'role', // 'status', 'created_at:datetime', //'updated_at:datetime', //['class' => 'yiigridActionColumn'], $gridViewButtons ], ]); ?> </div>