Yii2利器GridView秘籍 / GridView之CheckboxColumn使用说明

阿北哥ya 135次阅读

又一篇到来了,今天我们给大家介绍GridView组件的CheckboxColumn列 - 复选框。

这个功能经常用于全选 / 全取消 或 批量操作,正因为如此,默认情况下CheckboxColumn就自带了全选和全取消功能,这由随CheckboxColumn列引入的yii.gridView.js实现。

除此之外,CheckboxColumn还有几个属性我们需要学习下。

结构

我们首先学习一下当一组checkbox被渲染出来后,每个属性的含义。

针对于一个checkbox,名字必须有,因此我们在使用CheckboxColumn的时候对于其name可以采用默认(selection),但是不能为空。

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [

        [
            'class' => 'yii\grid\CheckboxColumn',
            'name'=>'uid'
        ],
        'id',
        'username'
    ]
]);?>

上面代码执行后checkbox组的name为uid[],要注意这里多了一个[],这是一种用法,PHP可以按照数组来接收checkbox的数据。

接下来我们说说value,每个渲染的checkbox的value是什么那?它是对应记录model的主键值,比如$model->id

通过结构我们也学习了name属性的使用方法。

checkboxOptions

对于checkbox标签的属性控制,这种用法贯穿于整个GridView挂件,比如我们要设置checkbox的类,可以如下

[
    'class' => 'yii\grid\CheckboxColumn',
    'checkboxOptions' => [
        'class'=>'a'
    ],
],

此刻每个checkbox都会多了一个class="a"的属性及值。

这里有一个问题要注意!

我们刚说了CheckboxColumn有一个cssClass也,它也会作用于checkbox的class属性,记住当我们为CheckboxColumn在cssClass和checkboxOptions都设置了class后,这两个类会叠加而不会替换。

cssClass

既然刚说了cssClass,我们有必要说明下,这不是一个必填项,当我们不设置的时候,js文件可以通过CheckboxColumn的name属性来实现全选功能,如果设置了则按照cssClass来进行帅选。

值得注意的是,当我们使用checkboxOptions来设置class而没有设置cssClass时,js文件仍然会按照CheckboxColumn的name属性来实现全选功能。要注意。

multiple

最后说一个超级简单的属性,就是multiple,默认为真,代表具有全选功能,否则没有

[
    'class' => 'yii\grid\CheckboxColumn',
    'multiple'=>true,
],

如果为false,则此列头部不会出现全选复选框。

yii2框架还没有解决的一个bug

当我们要在一个table渲染出两列复选框的时候,全选功能会出现异常,在2.0.14版本中依然存在,等待官方解决。

最后要说的是,因为CheckboxColumn也是Column的子类,因此比如Column的visible属性等依然可以使用,本文介绍的仅仅是CheckboxColumn特有的属性。

下一篇为你带来很重要的ActionColumn列解说。

此文编号为421 上次更新于2个月前 / Yii 频道
相关文章
留言
小提醒 欢迎大家留言并且我会拿出时间去看,当然我会删除那些被视为垃圾或广告的留言。
暂时没有回复
首页 登录 / 注册