Php yii2将css类动态应用于复选框选项

Php yii2将css类动态应用于复选框选项,php,css,yii2,Php,Css,Yii2,我想将css类应用于复选框列表选项 我的代码中有: <?= $form->field($searchModel, 'colour') ->checkboxList(ArrayHelper::map(app\modules\admin\models\ShoeColour::find()->all(), 'id', 'colour'), ([ 'itemOptions'=>['class'=>'my-own-custom-class']])) ?>

我想将css类应用于复选框列表选项

我的代码中有:

<?= $form->field($searchModel, 'colour')
->checkboxList(ArrayHelper::map(app\modules\admin\models\ShoeColour::find()->all(), 'id', 'colour'), 
([ 'itemOptions'=>['class'=>'my-own-custom-class']])) ?>

生成的html如下所示:

<div class="form-group field-productsearch-colour">
<label class="control-label">Colour</label>
<input type="hidden" name="ProductSearch[colour]" value=""><div id="productsearch-colour"><label><input type="checkbox" class="my-own-custom-class" name="ProductSearch[colour][]" value="1"> Red</label>
<label><input type="checkbox" class="my-own-custom-class" name="ProductSearch[colour][]" value="2"> Blue</label>
<label><input type="checkbox" class="my-own-custom-class" name="ProductSearch[colour][]" value="3"> Pink</label>
<label><input type="checkbox" class="my-own-custom-class" name="ProductSearch[colour][]" value="4"> Black</label>
<label><input type="checkbox" class="my-own-custom-class" name="ProductSearch[colour][]" value="5"> Brown</label>
<label><input type="checkbox" class="my-own-custom-class" name="ProductSearch[colour][]" value="6"> Grey</label>
<label><input type="checkbox" class="my-own-custom-class" name="ProductSearch[colour][]" value="7"> White</label></div>

<div class="help-block"></div>
</div>

颜色
红色
蓝色
粉红色
黑色
棕色的
灰色
白色
我在我的table shoe_color-column中为每种颜色设置了css_类,我想为每种颜色应用css类,但不知道如何实现这一点


例如,我希望使用
class-1
class-2
等等,而不是
my own custom class

您可以在循环中创建HTML标记:

    <div class="form-group field-productsearch-colour">
    <label class="control-label">Colour</label>
    <input type="hidden" name="ProductSearch[colour]" value="">
    <div id="productsearch-colour">
        <?php 
        $i = 1;
        foreach () { ?>
          <label><input type="checkbox" class="class-<?= $i ?>" name="ProductSearch[colour][]" value="1"> Red</label>
       <?php $i++;
       } ?>
    </div>

颜色

我认为@SfiliĜ81和@Michal Hynčica已经向您展示了您想要的东西。您必须在带有闭包的配置中使用
项目,而不是使用
项目选项

<?php
//  **** ONLY FOR TEST ****
use \yii\helpers\Html;
use \yii\widgets\ActiveForm;


class ProductSearch extends \yii\base\Model {
    public $colour;
}

$searchModel = new ProductSearch;
$colors = [
    1 => 'Red',
    2 => 'Blue',
    3 => 'Pink',
    4 => 'Black',
    5 => 'Brown',
    6 => 'Grey',
    7 => 'White'
];
$form = ActiveForm::begin([]);
// END **** ONLY FOR TEST ****

echo $form->field($searchModel, 'colour')->checkboxList($colors, ['item'=> function($index, $label, $name, $checked, $value){
    return Html::checkbox($name, $checked, [
        'value' => $value,
        'label' => $label,
        'class' => 'class-' . ($index + 1), // <--------
    ]);
}]);

尝试阅读此文件,但已阅读。无法理解如何在活动形式中应用相同的方法,那么这个示例也没有详细说明动态类。问题@Sfili_81 linked的公认答案中的第二个示例正是您想要的。它以同样的方式应用于活动窗体。
<div class="form-group field-productsearch-colour">
    <label class="control-label">Colour</label>
    <input type="hidden" name="ProductSearch[colour]" value=""><div id="productsearch-colour"><label><input type="checkbox" class="class-1" name="ProductSearch[colour][]" value="1"> Red</label>
        <label><input type="checkbox" class="class-2" name="ProductSearch[colour][]" value="2"> Blue</label>
        <label><input type="checkbox" class="class-3" name="ProductSearch[colour][]" value="3"> Pink</label>
        <label><input type="checkbox" class="class-4" name="ProductSearch[colour][]" value="4"> Black</label>
        <label><input type="checkbox" class="class-5" name="ProductSearch[colour][]" value="5"> Brown</label>
        <label><input type="checkbox" class="class-6" name="ProductSearch[colour][]" value="6"> Grey</label>
        <label><input type="checkbox" class="class-7" name="ProductSearch[colour][]" value="7"> White</label></div>
    <div class="help-block"></div>
</div>