zoukankan      html  css  js  c++  java
  • Yii2 Gridview 动态显示行或列和action列

    我们知道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>
  • 相关阅读:
    eclipse下c/cpp " undefined reference to " or "launch failed binary not found"问题
    blockdev 设置文件预读大小
    宝宝语录
    CentOS修改主机名(hostname)
    subprocess报No such file or directory
    用ldap方式访问AD域的的错误解释
    英特尔的VTd技术是什么?
    This virtual machine requires the VMware keyboard support driver which is not installed
    Linux内核的文件预读详细详解
    UNP总结 Chapter 26~29 线程、IP选项、原始套接字、数据链路访问
  • 原文地址:https://www.cnblogs.com/mafeifan/p/4483557.html
Copyright © 2011-2022 走看看