Yii 自定义表单验证规则和客户端验证

原创 2015年06月09日 22:34:11

Yii使用rules来定义验证规则,一些常用的验证规则包括:


required: CRequiredValidator
filter: CFilterValidator
match: CRegularExpressionValidator
email: CEmailValidator
url: CUrlValidator
unique: CUniqueValidator
compare: CCompareValidator
length: CStringValidator
in: CRangeValidator
numerical: CNumberValidator
captcha: CCaptchaValidator
type: CTypeValidator
file: CFileValidator
default: CDefaultValueValidator
exist: CExistValidator
boolean: CBooleanValidator
date: CDateValidator
safe: CSafeValidator
unsafe: CUnsafeValidator


缺省情况是在服务器端验证,如果想在客户端验证,那么需要给CActiveForm传递enableClientValidation参数。

对于大部分情况上述规则就能满足需求,Yii会自动生成相应的客户端JS验证脚本。

但对于一些自定义的界面控件,例如时间选择控件,要求对时间的取值做一定的范围约束,那么就需要用到自定义验证规则了。

使用 array('begin_time', 'checkTime'), 然后定义checkTime(){...}函数可以完成服务器端的验证,不能完成客户端验证,如果要启用客户端验证,

需要从CValidator基类派生自己的验证类,如下所示:

class TimeValidator extends CValidator{
    protected function validateAttribute($object,$attribute){
         //TODO: server side validation
    }
    public function clientValidateAttribute($object,$attribute){
        $condition="value<'".date('Y-m-d H:i'."'");
        return "
        if(".$condition.") {
            messages.push(".CJSON::encode('开始时间必须大于当前时间').");
        }
        ";
    }
}

然后在rules中定义如下:array('f_begin_time', 'TimeValidator'),

你还可以给TimeValidator传递参数,array('f_begin_time', 'TimeValidator', 'mode'=>'test'), 

在clientValidateAttribute方法中使用$this->mode成员变量来访问。


by iefreer

版权声明:本文为博主原创文章,未经博主允许不得转载。

YII2.0使用ActiveForm表单

Controller控制器层代码

YII2 服务器验证码不显示

最近做的一个项目上线了,我用YII2新搭建的后台,在本地以及内测地址都正常,上线之后验证码却没有显示,上网搜了一下,有网友说修改一下源文件就可以。 查找源文件:yii2/captcha/Captcha...
  • Candy_3
  • Candy_3
  • 2015年07月01日 14:46
  • 777

yii2中自定义验证规则rules

yii2中自定义验证规则rules

yii2自定义表单使用验证码

首先在控制器定义方法actions:public function actions() { return [ 'captcha' => [ ...

yii2表单验证方法

model层的书写验证规则 return [ [['username','password','email','phone','images'],'required','message'=>'不能为空...

Yii 自定义model验证规则

YII的models中的rules部分是一些表单的验证规则,对于表单验证十分有用,在相应的视图(views)里面添加了表单,在表单被提交之前程序都会自动先来这里面的规则里验证,只有通过对其有效的限制规...

Yii学习笔记之四(表单验证 api 翻译)

1.表单验证 对于用户输入的所有数据,你不能信任,必须加以验证。 所有框架如此,对于yii 可以使用函数  yii\base\Model::validate()  进行验证 他会返回boolean...

yii2使用Model无刷新验证rule自定义方法

先配置rule/** * @inheritdoc */ public function rules() { return [ [["B"], "requiredBy...

Yii初学者必看-yii 表单验证规则

对yii深入了解总结出:希望对初学者有些帮助 Active Record (AR) 是一个流行的 对象-关系映射 (ORM) 技术。 每个 AR 类代表一个数据表(或视图),数据表(或视图)的列...

Yii2 定制表单输入字段的标签和样式

Yii2中对于表单和字段的支持组件为ActiveForm和ActiveField,要生成一个具有label、input、error提示这样通用格式的登录框,可编写如下代码: ...
  • iefreer
  • iefreer
  • 2015年01月12日 22:16
  • 40507
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Yii 自定义表单验证规则和客户端验证
举报原因:
原因补充:

(最多只允许输入30个字)