Yii2:验证是否至少选中了一个复选框

问题描述 投票:1回答:1

我为他想要创建促销的用户提供了多个音乐版本,在促销创建表单上我们列出了所有版本,并且我使用表单模型来创建促销,其中我为我的几个输入定义了所有规则促销形式模型。

我想检查用户在保存表单时是否至少选择了一个版本,但由于复选框是动态创建的,因此无法正常工作。

我的该字段的表单代码

foreach ($releaseInfo as $releases) {
    if (!is_null($releases->releaseSongs)) {
        echo "<fieldset><legend>" . \yii\helpers\Html::activeCheckbox($model, 'selected_releases[]', ['id' => 'release_' . $releases->id, 'onclick' => '$("#songs_' . $releases->id . '").toggle()', 'label' => false]) . "&nbsp;" . $releases->name . "</legend>";
        foreach ($releases->releaseSongs as $k => $v) {
            echo "<div id='songs_" . $releases->id . "' style='display:none'>";
            echo "<div>";
            echo $v->song->name;
            echo "</div>";
            echo "</div>";
        }
    }
}

echo "</fieldset>";

我的模范规则

['selected_releases', 'required', 'on' => ['catalog', 'catalog_update'], 'requiredValue' => 1,
    'when' => function ($model) {return ($model->scenario == self::SCENARIO_CATALOG_BASED || $model->scenario == self::SCENARIO_CATALOG_BASED_UPDATE);},
    'whenClient' => 'function(attribute,value){return ("' . $this->scenario . '"=="' . self::SCENARIO_CATALOG_BASED . '" || "' . $this->scenario . '"=="' . self::SCENARIO_CATALOG_BASED_UPDATE . '")}',
    'message' => 'You must select atleast one release',
]

当我提交表单时,发布的输入变量看起来像这样

 [selected_releases] => Array(
            [0] => 0
            [1] => 0
 )

规则中的requiredValue不起作用,因为selected_releases是一个值数组,它总是说

qazxsw poi我应该如何使用qazxsw poi参数选项来检查规则的至少一个选项

要么

我是否必须在验证时调用自定义验证方法

yii2 yii2-advanced-app
1个回答
1
投票

我为此目的使用了自定义验证方法,我的验证规则如下所示

You must select atleast one release

自定义方法

requiredValue
© www.soinside.com 2019 - 2024. All rights reserved.