Yii框架CModel的rules方法详解及验证规则

需积分: 9 1 下载量 125 浏览量 更新于2024-09-12 收藏 6KB TXT 举报
"这篇文章主要介绍了Yii框架中的CModel类中rules方法的使用,特别是针对Yii1版本。rules方法用于定义模型数据验证的规则,通过不同的验证器类来确保输入的数据符合预期格式和条件。" 在Yii框架中,CModel类是模型对象的基础,它包含了业务逻辑和数据验证的核心功能。`rules`方法是CModel类的一个关键方法,用于定义数据验证规则。这些规则由一系列验证器(validators)组成,每个验证器都有特定的属性和行为,用于检查模型的属性值是否有效。 1. CRequiredValidator - 必填验证器 - `requiredValue`: 验证时期望的值,默认为空,若指定则验证失败时需与该值匹配。 - `strict`: 是否严格比较,如果为true,不仅要求非空,还要求与`requiredValue`完全匹配。 - 示例:`array('username', 'required', 'requiredValue' => 'lh')`,若用户名为空或不等于'lh',则验证失败。 2. CFilterValidator - 过滤验证器 - `filter`: 一个回调函数,用于对属性值进行处理,如转换、清理等。 - 示例:`array('username', 'filter', 'filter' => 'trim')`,将移除用户名前后的空白字符。 3. CRegularExpressionValidator - 正则表达式验证器 - `pattern`: 正则表达式,用于匹配属性值。 - 示例:`array('email', 'match', 'pattern' => '/^[\w.-]+@[\w-]+(\.[\w-]+)+$/', 'message' => '无效的电子邮件地址')`,验证电子邮件地址的格式。 4. CEmailValidator - 电子邮件验证器 - 内置了对电子邮件地址格式的验证。 - 示例:`array('email', 'email')`,检查电子邮件地址是否合法。 5. CUrlValidator - URL验证器 - 验证URL是否符合标准格式。 - 示例:`array('website', 'url')`,检查网站URL的有效性。 6. CUniqueValidator - 唯一验证器 - 确保模型的某个属性值在数据库中是唯一的。 - 示例:`array('username', 'unique')`,检查用户名是否已存在。 7. CCompareValidator - 比较验证器 - 比较当前属性值与其他属性或常量。 - 示例:`array('password', 'compare', 'compareAttribute' => 'confirmPassword')`,验证密码和确认密码是否一致。 8. CStringValidator - 字符串长度验证器 - 可以设置最小长度、最大长度或精确长度。 - 示例:`array('description', 'length', 'min' => 10, 'max' => 255)`,限制描述字段的长度。 9. CRangeValidator - 范围验证器 - 验证属性值是否在指定范围内。 - 示例:`array('age', 'in', 'range' => array(18, 60))`,检查年龄是否在18到60之间。 10. CNumberValidator - 数值验证器 - 检查属性值是否为数字,可以设置最小值、最大值等。 - 示例:`array('price', 'numerical', 'integerOnly' => true, 'min' => 1, 'max' => 1000)`,验证价格是否为正整数且不超过1000。 11. CCaptchaValidator - 图形验证码验证器 - 验证用户输入的验证码是否正确。 - 示例:`array('captcha', 'captcha', 'caseSensitive' => false)`,忽略大小写检查验证码。 12. CFileTypeValidator - 文件类型验证器 - 验证上传文件的类型和大小。 - 示例:`array('avatar', 'file', 'types' => 'jpg, gif, png', 'maxSize' => 1024*1024)`,限制上传的头像文件为.jpg, .gif, .png格式且大小不超过1MB。 13. CDefaultValueValidator - 默认值验证器 - 如果属性值为空,则设置默认值。 - 示例:`array('status', 'default', 'setOnEmpty' => true, 'value' => 1)`,若状态未设置,则设为1。 14. CExistValidator - 存在验证器 - 验证属性值在数据库中是否存在。 - 示例:`array('category_id', 'exist', 'targetClass' => 'Category', 'targetAttribute' => 'id')`,检查分类ID是否在类别表中。 15. CBooleanValidator - 布尔值验证器 - 检查属性值是否为布尔类型。 - 示例:`array('is_active', 'boolean')`,验证是否活动状态是否有效。 16. CDateValidator - 日期验证器 - 验证日期格式是否符合指定格式。 - 示例:`array('dob', 'date', 'format' => 'yyyy-MM-dd')`,检查出生日期是否符合'年-月-日'格式。 17. CSafeValidator - 安全验证器 - 对于“安全”属性,允许其在无验证的情况下进行更新。 - 示例:`array('notes', 'safe')`,笔记字段允许任何值。 18. CUnsafeValidator - 不安全验证器 - 用于标记不安全的属性,这些属性不应在批量更新中包含。 `rules`方法中的其他参数,如`message`用于自定义错误消息,`on`指定在哪些场景下执行验证,`skipOnError`表示当遇到错误时是否跳过后续验证。这些参数可以灵活地调整验证规则的行为,以适应各种业务需求。 通过理解并熟练应用这些验证器,开发者可以在Yii框架中构建健壮的数据验证机制,确保应用程序接收到的数据是准确、有效的。