最小/最大的yii2依赖验证

时间:2015-12-21 10:37:19

标签: validation yii2

我需要创建依赖验证。当我在下拉列表中选择选项时,我必须从数据库中获取值(最小和最大总和)。 我的代码来自下拉列表中的一个选项:

       [
            ['sum'], 
            'number',
            'min' => HdbkPaymentMethod::getMethodSumMinById(1),
            'max' => HdbkPaymentMethod::getMethodSumMaxById(1),
            'when' => function($model, $attribute) {
                $model->method_id == 1;
            }, 
            'whenClient' => "function (attribute, value) {
                return $('#payment-method_id').val() == 1;
            }"
        ],

但它必须是下拉列表中的许多选项。请帮帮我。

1 个答案:

答案 0 :(得分:2)

如果我理解了这个问题,您希望sum的值在maxmin指定的范围内。为此,您需要maxmin的功能。或者,如果我们怀疑maxmin只能是数值,则需要inline validator或用户定义的验证器

[
    ['sum'], 
    'validateSum'
],

然后在你的模型中添加验证器;

public function validateSum($attribute, $params){
    if ($this->$attribute < HdbkPaymentMethod::getMethodSumMinById($this->method_id){
        $this->addError($attribute, 'Sum is too small');
    }
if ($this->$attribute > HdbkPaymentMethod::getMethodSumMaxById($this->method_id){
        $this->addError($attribute, 'Sum is too big');
    }
}

对不起,我没有对此进行测试,但似乎是相关的方法。我不确定如何为这种安排实施客户端验证!