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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2 - 表单验证规则:如何使用自定义验证功能或替代?相关的知识,希望对你有一定的参考价值。

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

到目前为止我有什么

在规则数组中

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

自定义验证方法是

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

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

答案

你可以做这样的事情

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

指定值的范围。

另一答案

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

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!!!',
]
另一答案

你可以使用range验证器,如果你还想做custom validation this会帮助你。

以上是关于Yii2 - 表单验证规则:如何使用自定义验证功能或替代?的主要内容,如果未能解决你的问题,请参考以下文章

yii2中的rules自定义验证规则都有哪些

在 Laravel 5 中使用表单请求验证时如何添加自定义验证规则

yii2验证无效

创建自定义 codeigniter 验证规则

Yii2,自定义验证:clientValidateAttribute() 无法正常工作

jquery.validate.js使用之自定义表单验证规则