Yii框架CModel的rules方法详解及验证规则
需积分: 9 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框架中构建健壮的数据验证机制,确保应用程序接收到的数据是准确、有效的。
2020-12-17 上传
2020-10-22 上传
2020-10-23 上传
2021-06-01 上传
2020-12-19 上传
2020-10-23 上传
2021-01-20 上传
2020-10-22 上传
2020-12-19 上传
csssy003
- 粉丝: 0
- 资源: 3
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查