【问题标题】:Yii2 ActiveForm custom template for checkbox fieldYii2 ActiveForm 复选框字段的自定义模板
【发布时间】:2016-10-20 12:13:34
【问题描述】:

我希望为我的 checkboxList 使用模板。 这就是我要应用的属性

class="switch" 检查 data-on-text="ON" data-off-text="OFF" data-on-color="teal"

<?php $form = ActiveForm::begin(); ?> 
                            <ul class="list-unstyled">
                                <li>
                                    <?= $form->field($modelUserPermission, 'id_permission')->checkboxList(ArrayHelper::map(Permission::find()->all(),'id', 'code')) ?>
                                </li><br>  
                           </ul>
                        <div class="form-group">
                            <?= Html::submitButton($modelUserPermission->isNewRecord ? 'Create' : 'Update', ['class' => $modelUserPermission->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'value'=>'Create', 'name'=>'submit']) ?>
                        </div>
                    <?php ActiveForm::end(); ?>

【问题讨论】:

  • 您想将这些属性应用到每个复选框?

标签: templates yii2 checkboxlist


【解决方案1】:
<?= $form->field($model, 'recomended_by_user', ['template'=>'<div class="control-group">
                                <label class="control control--checkbox checkbox-small-text">Recomended by user
                                    {input}
                                    <div class="control__indicator"></div>
                                </label>
                            </div>'])->textInput(['class'=>"",'type'=>'checkbox'])?>

像这样用于自定义复选框模板

【讨论】:

  • 它只适用于单个复选框,不适用于复选框列表
【解决方案2】:

Bizley 提供的答案是正确的,但如果您愿意,可以尝试另一种方法。

<?php 
    $items_array = ArrayHelper::map(Permission::find()->all(),'id', 'code');

    echo $form->field($model, 'id_permission')->checkboxList($items_array, [
        'items' =>
        function ($index, $label, $name, $checked, $value) {
            return Html::checkbox($name, $checked, [
                        'value' => $value,
                        'label' => '<label for="' . $label . '">' . $label . '</label>',
                        'labelOptions' => [
                        // you can set label options here                                                ],
                        ],
            ]);
        }, 'itemOptions' => ['class' => 'switch',
                    'data-on-text' => 'ON', 'data-off-text' => 'OFF', 'data-on-color' => 'teal'],
                'separator' => false,]);
?>

【讨论】:

    【解决方案3】:

    如果您希望每个复选框中都有这些属性(如 Insane Skull 所要求的),请使用 itemOptions 选项。

    <?= $form->field($modelUserPermission, 'id_permission')->checkboxList(
        ArrayHelper::map(Permission::find()->all(),'id', 'code'),
        [
            'itemOptions' => [
                'class' => 'switch',
                'data' => [
                    'on-text' => 'ON',
                    'off-text' => 'OFF',
                    'on-color' => 'teal'
                ],
            ],
        ]
    ) ?>
    

    因为它是 ActiveField 小部件,所以为了检查所有复选框,您必须将数组传递给 $modelUserPermission-&gt;id_permission 以及所有 ID。

    【讨论】:

    • 我已经这样做了,但它不起作用我总是使用默认样式
    • 这取决于您应用样式本身的方式和位置,上面的代码会根据您的要求添加所有属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2016-04-08
    • 2016-03-03
    • 1970-01-01
    相关资源
    最近更新 更多