欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。

文摘  关于Yii2的checkboxList的使用和设置问题

PHP框架 本站 464 0评论

网上关于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()转换一下。


-------------------------------------------------------------------------------------------------------------

以下是总结:


实例

<?= $form->field($model, 'sex')

->checkboxList([0 => '男', 1 => '女', 2 => '保密'],

 ['value' => [0, 1],

'item' => function ($index, $label, $name, $checked, $value){

$checkStr = $checked ? "checked" : "";

return '<label><input type="checkbox" name="' . $name . '" value="' . $value . '" ' . $checkStr . ' class="class' . $index . '" data-uid="user' . $index . '">' . $label . '</label>';

},

 'itemOptions' => ['class' => 'myClass']]); 

?>

说明:

CheckBoxList的参数[0 => '男', 1 => '女', 2 => '保密']表示数据源,即多选框的所有选项,是数组形式。

 ['value' => [0, 1],表示已选择的选项。“0,1”是从数据库读取的选项,一般是字符串,此处要以数组的形式展示,可以用explode转化一下。

'item' 是自定义数据源

eg:

<?= $form->field($model, 'type')->checkboxList(Categorys::getCategoriesName(), ['value' => explode(',', $model->type)]) ?>

field($model, 'type'): 标签

Categorys::getCategoriesName():所有多选选项数据源

'value' => explode(',', $model->type)]):已选择的数据 $model->type表示从数据库读取的字符串保存值(一般是保存的数据源key值),在保存数据源key值的时候记得用implode将数组转化为字符串。


参考网址:

https://blog.csdn.net/zimuxin/article/details/78065557 


转载请注明: ITTXX.CN--分享互联网 » 关于Yii2的checkboxList的使用和设置问题

最后更新:2021-08-03 11:16:39

赞 (4) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽