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

Yii 2 ActiveForm form field how to implement "select all" option in checkboxlist?

Yii 2 ActiveForm 表单字段如何在复选框列表中实现 "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();
?>

1)checkbox 添加到您的表单中,如下所示:

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

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');
    });
});

#root-container-id 替换为该字段的容器的实际 ID。它应该类似于型号名称 + 破折号 + MENU_DESC。在生成的 html 输出中查看它。或者您可以添加另一个 class 或使用复选框名称构建选择器,这取决于您。

然后注册这个js,最好用assets.

如果启用,触发点击用于客户端验证的正确工作。