Yii 2 ActiveForm表单字段如何在checkboxlist中实现"select all"选项?

esi*_*iaz 3 checkboxlist yii2

Yii 2 ActiveForm表单字段如何在checkboxlist中实现"select all"选项?

<?php
$form = ActiveForm::begin([
    'id' => 'form-id',
    'type' => ActiveForm::TYPE_HORIZONTAL,
    'options' => ['class' => 'well'],   
]);
?>

<?php
    echo $form->field($model, 'MY_DESC', ['template' => "{label}\n{input}\n{hint}\n{error}"])
    ->label(false)
    ->checkboxList($mylist, ['separator' => '<hr>']);
?>

<?= Html::submitButton('submit', ['class' => 'btn btn-primary']) ?>
<?php ActiveForm::end();
?>
Run Code Online (Sandbox Code Playgroud)

aro*_*hev 6

1)在表单中添加复选框,如下所示:

echo Html::checkbox(null, false, [
    'label' => 'Check all',
    'class' => 'check-all',
]);
Run Code Online (Sandbox Code Playgroud)

2)添加一些JavaScript以使其工作:

$('.check-all').click(function() {
    var selector = $(this).is(':checked') ? ':not(:checked)' : ':checked';

    $('#root-container-id input[type="checkbox"]' + selector).each(function() {
        $(this).trigger('click');
    });
});
Run Code Online (Sandbox Code Playgroud)

替换#root-container-id为该字段的容器的实际ID.它应该是Model name + dash + MENU_DESC.在生成的html输出中查看它.或者您可以添加另一个名称为复选框的类或构建选择器,这取决于您.

然后注册这个js,最好是资产.

触发点击用于正确的客户端验证工作(如果已启用).