先在网上找了个checkboxList的描述:
public static function checkboxList($name, $selection = null, $items = [], $options = [])
下面我们一一说明其中的参数及使用
$name——设置checkbox的name
字符串,这个用来设置生成的每个checkbox的name值,因为是生成多个checkbox,所以$name的值要以[]结尾,如果没有的话在函数内部会自动加上[]
$selection——设置checkbox是否选中
字符串或者数组,这个用来设置哪些checkbox为选中状态,值为checkbox中的value;如果需要多个checkbox选中那么就用数组的形式来传递多个值,如['a','b','c']
$items——设置多个checkbox的数据源
数组,这个用来生成各个checkbox的数据源,其中键作为checkbox的value,值作为checkbox的label
$options
数组,这个比较复杂,里面的参数比较多,其中有几个固定的参数:
- tag:字符串,设置生成的所有的checkbox的容器标签,默认为div
- unselect:字符串,当checkbox都没有选择的时候的默认值。如果设置这个,会自动生成一个以name(不带[])为名称的hidden类型的input,这个input的值就为unselect
- encode:布尔值,设置每个checkbox的label是否需要编码,默认为true
- separator:字符串,生成的每个checkbox html代码之间的连接字符串,默认为 ,也就是说默认生成的checkbox都是一行一个。
- itemOptions:数组,生成每个checkbox的参数选项。这个在单独介绍checkbox函数的时候说明
- item:回调函数,在循环生成每个checkbox表单的时候,会调用这个函数。如果设置了则使用返回值作为checkbox的表单,否则使用static::checkbox函数来生成每个checkbox表单,函数格式为:
- function ($index, $label, $name, $checked, $value)
在使用activeform时,一般格式是这样的
echo $form->field($model, 'size')->checkboxList(name,$model->allSize);
size相当于$selection
allSize相当于$items
关键在于size的格式,size需要存放键值的数组,例如$items是(0=>'X',1=>'XL',2=>'2XL');我们想选的是1和2,那$selection就需要是(0=>1,1=>2);
如果直接传(1=>'XL',2=>'2XL');会出错,可以使用array_keys()转换一下。