Yii2 - 表单验证规则:如何使用自定义验证功能或替代?

时间:2014-06-09 12:10:41

标签: php validation yii yii2

我正在使用 Yii 2.0,我无法弄清楚如何在下拉列表中验证所选选项的值,我需要检查,如果它大于ZERO 。

到目前为止我有什么

规则数组中的

['year', 'required'],
['day', 'required'],
['month', 'checkDefaultValue'],...

自定义验证方法是

public function checkDefaultValue() {
    if ($this->month > 0) {
        $this->addError('month', 'Month error message...');
    }
}

这段代码不起作用,有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

你可以做这样的事情

['month', 'in','range' => ['Jan','Feb']],

指定值的范围。

答案 1 :(得分:0)

您的代码无效,因为如果月份大于零,则会添加错误,这与您想要的相反。
这可行:

public function checkDefaultValue() {
    if ($this->month <= 0) {
        $this->addError('month', 'Month error message...');
    }
}

或使用默认数字验证器来执行此操作甚至更多:

[
    ['month'], 
    'number', 
    'integerOnly' => true,
    'min' => 1,
    'tooSmall'=>'the selected item is too small for month!!!',
    'max' => 12,
    'tooBig'=>'the selected item is too big for month!!!',
]

答案 2 :(得分:0)

您可以使用range验证工具,如果您仍想要custom validation this,则可以为您提供帮助。