先在網上找了個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代碼之間的連接字符串,默認為 \n,也就是說默認生成的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()轉換一下。