Yii框架CModel的rules方法详解及验证规则
需积分: 9 124 浏览量
更新于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 上传
123 浏览量
127 浏览量
2021-06-01 上传
2020-12-19 上传
2020-10-23 上传
101 浏览量
2020-10-22 上传
117 浏览量
csssy003
- 粉丝: 0
- 资源: 3
最新资源
- MFC2000-3A型微机厂用电快速切换装置使用说明书
- JavaScript+语言精髓与编程实践.pdf
- Pascal基础教程
- VC++6.0 MFC类库(中文版)
- router OS 功能介绍
- 电脑 小技巧 (让你使用电脑更轻松)
- 多线程编程指南.pdf
- ASP.NET与Web Service实例剖析中文版
- Optimizations od a MIMO relay network
- C案例分析-开发综合程序
- Iterative waterfilling for Gaussian vector multiple access channel
- 非常实用和详细介绍的mib信息库文件
- Infrastructure relay transmission with cooperative MIMO
- 巨著《管理学原理》PDF版
- oracle sql 优化
- Mutual information and minimum mean sqaured error in Gaussian channel