我需要创建依赖验证。当我在下拉列表中选择选项时,我必须从数据库中获取值(最小和最大总和)。 我的代码来自下拉列表中的一个选项:
[
['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;
}"
],
但它必须是下拉列表中的许多选项。请帮帮我。
答案 0 :(得分:2)
如果我理解了这个问题,您希望sum
的值在max
和min
指定的范围内。为此,您需要max
和min
的功能。或者,如果我们怀疑max
和min
只能是数值,则需要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');
}
}
对不起,我没有对此进行测试,但似乎是相关的方法。我不确定如何为这种安排实施客户端验证!