关于Yii2的checkboxList的初始选项设置问题

先在网上找了个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表单,函数格式为:
    1. 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()转换一下。

原文地址:https://www.cnblogs.com/chenkeyu/p/6821174.html