[yii2小心肝儿]GridView - 睡衣篇

GridView-睡衣篇

书接上回,这节我们将扒掉GridView的睡衣,越来越少了~????

上回我兴高采烈的拿着修改后的结果给客户看,结果客户看后露出了囧字脸,说了句:"小北啊,再改改吧"。

上回结果

alt

这次客户说了这些话

  • 为何没有会员的时候显示"No results found.",应该显示"当前没有会员"啊,对对,字体是红色,加粗,必须加粗。

  • 为啥显示"Showing 1-2 of 4 items.",这些都去掉吧。

  • 啊对,为啥没有数据的时候表格还是显示,不要,整个表格消失,只是显示"当前没有会员"

  • 能不能每行加个选择,然后还有个全选,批量删除,那样多高大上~

回到自己的MAC前,?烧根香,祝客户今天去厕所忘记带纸,开始改吧~

( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)

第一条很好改,GridView提供了emptyText和emptyTextOptions两个字段可以实现,emptyText代表$dataProvider没有数据时候显示的信息,emptyTextOptions决定这个显示信息的Html属性,emptyTextOptions接受一个数组。

开始修改。

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            'id',
            'username',
            [
                'attribute'=>'create_time',
                'format'=>['date', 'php:Y-m-d H:i:s']
            ],
            [
                'attribute'=>'sex',
                'value'=>function($data){
                    return $data->sex == 1 ? '男' : '女';
                }
            ],
            'province',
            'city'
        ],
        'emptyText'=>'当前没有会员',
        'exptyText'=>['style'=>'color:red;font-weight:bold']
    ]);?>

两行搞定,看看结果

alt

( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)

第二条客户要去掉"Showing 1-2 of 4 items."

alt

我知道GridView提供了一个layout布局属性,可以用这个满足客户的需求,先啰嗦几句,我们知道GridView渲染到浏览器后有3部分

  • 一个表格,承载控制器传来的数据

  • 一个分页,在表格下放

  • 一个简介,类似于Showing 1-2 of 4 items.这样

alt

类似于上图这样,而layout就是决定这些部分的摆放位置(堆积木),layout接收字符串,默认情况为。

    'layout' => "{summary}\n{items}\n{pager}"

如代码所示,GridView自上而下是简介,表格,分页。那么我们知道了,解决客户需求只需要重新布局layout,去掉{summary}即可。

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            'id',
            'username',
            [
                'attribute'=>'create_time',
                'format'=>['date', 'php:Y-m-d H:i:s']
            ],
            [
                'attribute'=>'sex',
                'value'=>function($data){
                    return $data->sex == 1 ? '男' : '女';
                }
            ],
            'province',
            'city'
        ],
        'emptyText'=>'当前没有会员',
        'exptyText'=>['style'=>'color:red;font-weight:bold'],
        'layout'=>"{items}\n{pager}"
    ]);?>

刷新浏览器

alt

太酷了,轻松搞定,去休息下~

最近北哥在看一本书叫做《把时间当做朋友》李笑来著,讲心智的力量,推荐大家读读。

10分钟后,我回到了MAC前继续我的工作。现在要处理的是当无数据时表格也消失的问题。

我不得不为yii2点个赞,太多细节点ta都想到了,showOnEmpty贴心小属性正式露脸。
通过设置showOnEmpty的true/false可以决定当数据不存在的时候,表格是否出现,默认为真(显示)。

修改前无数据时:
alt

现在开始改代码(增加showOnEmpty为false)

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            'id',
            'username',
            [
                'attribute'=>'create_time',
                'format'=>['date', 'php:Y-m-d H:i:s']
            ],
            [
                'attribute'=>'sex',
                'value'=>function($data){
                    return $data->sex == 1 ? '男' : '女';
                }
            ],
            'province',
            'city'
        ],
        'emptyText'=>'当前没有会员',
        'exptyText'=>['style'=>'color:red;font-weight:bold'],
        'layout'=>"{items}\n{pager}",
        'showOnEmpty'=>false
    ]);?>

看看修改后的结果

alt

真的没了,用yii2,一起变得简单,和谐社会就是好~

( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)( ̄. ̄)

Last One,最后一条 能不能每行加个选择,然后还有个全选,批量删除,那样多高大上~,当然删除的具体功能是其他人的事情,我只解决全选问题,这里要多说一些话。
大家一定记得在大衣篇里,我们将GridView的columns接收一个数组,每个数组项代表一列,我们可以为列传递一个模型的属性值,也可以传递一个数组。

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [            
            [
                'attribute'=>'create_time',
                'format'=>['date', 'php:Y-m-d H:i:s']
            ],            
        ]
    ]);?>

类似于上面代码,其实对于每列的这个数组,ta是有类别的,我们默认使用其中的DataColumn,代表显示数据。DataColumn还有几个兄弟,分别是

  • ActionColumn 显示操作按钮等

  • CheckboxColumn 显示复选框

  • RadioButtonColumn 显示单选框

  • SerialColumn 显示行号

好,就用CheckboxColumn来解决,看全部代码

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            [
                'class'=>'yii\grid\CheckboxColumn'
            ],
            'id',
            'username',
            [
                'attribute'=>'create_time',
                'format'=>['date', 'php:Y-m-d H:i:s']
            ],
            [
                'attribute'=>'sex',
                'value'=>function($data){
                    return $data->sex == 1 ? '男' : '女';
                }
            ],
            'province',
            'city'
        ],
        'emptyText'=>'当前没有会员',
        'exptyText'=>['style'=>'color:red;font-weight:bold'],
        'layout'=>"{items}\n{pager}",
        'showOnEmpty'=>false
    ]);?>

刷新浏览器看结果
alt

方便的不要不要的~( ̄▽ ̄)~( ̄▽ ̄)~,至于其他几个属性,大家可以替换试试,真心很方便。

不说了,快下班了~赶紧拿给客户看~

看着客户(郑讯)诡异的眼神和贱贱的表情,我内心如滔滔江水~~~,管他那,我是下班了,等到 GridView-底裤篇在和你继续折腾吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值