`

YII自带的模型验证

    博客分类:
  • Yii
 
阅读更多

 

// CValidator.php
public static $builtInValidators=array(
	'required'=>'CRequiredValidator',               // 验证属性值必需有值,不能为空
	'filter'=>'CFilterValidator',                          // 用过滤器转换属性的值
	'match'=>'CRegularExpressionValidator',    // 验证属性值匹配一个正则表达式
	'email'=>'CEmailValidator',                       // 验证属性值为有一个有效的Email地址
	'url'=>'CUrlValidator',                                // 验证属性值是一个有效的URL
	'unique'=>'CUniqueValidator',                    // 验证属性值在表中的对应列中是唯一的
	'compare'=>'CCompareValidator',              // 验证属性值与另一个属性的值相等
	'length'=>'CStringValidator',                      // 验证属性值的长度在一个范围内
	'in'=>'CRangeValidator',                           // 验证属性值在一个预定义列表中
	'numerical'=>'CNumberValidator',              // 验证属性值是数字
	'captcha'=>'CCaptchaValidator',                // 验证属性的值等于一个显示的CAPTCHA(验证码)的值
	'type'=>'CTypeValidator',                         // 验证属性值是一个指定的数据类型
	'file'=>'CFileValidator',                             // 验证属性值包含上传的文件
	'default'=>'CDefaultValueValidator',          // 验证属性值为分配的默认值
	'exist'=>'CExistValidator',                         // 验证属性值在表中的对应列中存在
	'boolean'=>'CBooleanValidator',               // 验证属性值是布尔值(true或false)
	'safe'=>'CSafeValidator',                         // 标记属性值为安全
	'unsafe'=>'CUnsafeValidator',                   // 标记属性值为不安全
	'date'=>'CDateValidator',                         // 验证属性值是日期
);

 

使用方法就是在 CActiveRecord 或 CFormModel 的子类中重写 rules() 函数,如下:

 

public function rules()
{
	return array(
		array('username,email,password,password2', 'required'),
		array('username', 'length', 'min'=>6, 'max'=>24),
		array('email', 'email'),
		array('password', 'length', 'min'=>6, 'max'=>16),
		array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'register'),
	);
}

rules() 中返回的数组一般如下:

 

array('属性名1,属性名2', '验证器别名', 'on'=>'场景', '验证器属性'=>'值', '...'=>'...')

 

 

  • array() 中前两个值是必须的,后面则是可选的,当然你要看具体验证器
  • 当有多个属性要使用同一个验证器时,可以写在同一条规则中,属性名使用英文逗号分隔
  • 验证器别名是必须的
  • 'on'=>'场景' 是可选的, 场景是在初始化某个具体的 CActiveRecord 类时通过构造函数设定的。
    如:
    class Post extends CActiveRecord

    在控制器类中

    $model=new Post('search'); 

    其中 'search' 就是场景,这样就设置了场景。

  • 当然,CActiveRecord 类的构造函数中,场景的默认值是 'insert'
  • 然后,验证器属性则要看某个具体验证器了,如
class CStringValidator extends CValidator
{
	public $max;
	public $min;
	public $is;
	public $tooShort;
	public $tooLong;
	public $allowEmpty=true;
	public $encoding;
 

验证器中的验证可以定制,例如LoginForm中的password

public function rules()
	{
		return array(
			// username and password are required
			array('username, password', 'required'),
			// rememberMe needs to be a boolean
			array('rememberMe', 'boolean'),
			// password needs to be authenticated
			array('password', 'authenticate'),
		);
	}
 

	/**
	 * Authenticates the password.
	 * This is the 'authenticate' validator as declared in rules().
	 */
	public function authenticate($attribute,$params)
	{
		$this->_identity=new UserIdentity($this->username,$this->password);
		if(!$this->_identity->authenticate())
			$this->addError('password','Incorrect username or password.');
	}
 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    yii1.1.10 开发包(包含yii权威指南以及yii博客例子讲解)

    8. **Gii代码生成工具**:Gii 是Yii自带的代码生成工具,能自动生成模型、控制器、表单和CRUD操作,大大提高了开发效率。 9. **Web服务**:Yii 支持RESTful API开发,便于构建面向服务的架构。 10. **错误和日志...

    yii-1.1.13源码

    9. **Gii工具**:Yii自带了一个代码生成工具Gii,可以帮助快速生成模型、控制器和视图,提高开发效率。 10. **Ajax支持**:Yii提供了丰富的Ajax支持,如AJAX验证和更新内容。 对于希望深入理解Yii框架的中高级PHP...

    Yii 1.1.17.467 php框架

    4. 使用Gii工具:Yii自带了一个代码生成工具Gii,可以自动生成模型、控制器、CRUD操作等基础代码,加快开发速度。 五、性能优化 Yii 1.1.17提供了一些性能优化手段,例如: 1. 使用缓存:合理使用缓存可以极大地...

    yii框架1.1.8

    7. **Gii代码生成工具**:Gii是Yii自带的代码生成工具,能自动生成模型、控制器、CRUD操作等,大大加快开发速度。在1.1.8中,Gii的模板和性能都有所提升。 8. **AJAX支持**:Yii提供了方便的AJAX支持,包括AJAX验证...

    yii-docs-1.1.7.r3135.zip

    Yii 自带了Gii代码生成工具,可以自动生成模型、控制器、表单以及CRUD(创建、读取、更新、删除)操作,极大地提高了开发效率。 9. 综合文档: yii-docs-1.1.7.r3135 包含了完整的框架文档,涵盖了所有类、方法和...

    yii 三级联动 省市区

    10. **前端框架**:虽然 Yii 自带了一些前端支持,但现代项目可能还会结合使用 Vue.js, React 或 Angular 等前端框架,以实现更复杂的交互效果和优化用户体验。 在 citydemo 文件中,包含了实现这个功能的代码和...

    Yii框架表单提交验证功能分析

    2. **Yii自带的Widget**: - CActiveForm是Yii提供的表单组件,它支持客户端验证(客户端验证可以在用户提交前进行,提高用户体验)和服务器端验证。 - 如`CActiveForm::beginWidget()`用于开始一个表单,通过`...

    yiiframework 中文 手册

    Yii 提供了便捷的表单处理功能,可以自动绑定模型属性,进行数据验证,并处理上传文件。同时,它还支持 AJAX 表单提交,增强用户体验。 九、URL 管理 Yii 的 URL 管理模块允许你创建友好的、SEO 友好的 URL 结构,...

    Yii2一个现代的PHP开发框架为专业的Web开发设计

    9. 命令行工具:Gii是Yii2自带的代码生成工具,可以快速生成模型、控制器、CRUD(增删改查)操作等基础代码,减少了重复劳动。 10. 国际化和本地化:Yii2支持多语言,内置I18N(国际化)和L10N(本地化)功能,方便...

    Yii2使用自带的UploadedFile实现的文件上传

    如果模型验证通过,并且文件上传成功,我们就会将文件保存到服务器指定的目录。在文件保存过程中,我们使用了date函数来生成文件名,并且在保存之前检查目标目录是否存在,如果不存在则创建它。最后,将上传成功的...

    最新Yii2.0手册

    Yii2.0自带了Gii代码生成工具,可以自动生成模型、控制器、视图等代码,加快开发速度。同时,Debug Toolbar提供了详细的性能分析和错误追踪信息,帮助开发者优化代码。 综上所述,"最新Yii2.0手册"是深入理解和使用...

    php mvc 框架 Yii 中文教程

    7. **Gii 代码生成工具**:Gii 是 Yii 自带的一个代码生成器,可以自动生成控制器、模型、视图等,加速开发过程。 8. **Ajax 支持**:Yii 提供了与 jQuery 集成的组件,便于创建 Ajax 富交互应用。 9. **强大的表单...

    Yii 2.0自带的验证码使用经验分享

    2. 验证码的规则验证:在模型的规则验证方法中,加入对验证码的验证规则,通常使用 Yii 提供的 'captcha' 规则验证器。这里的 'captcha' 是一个预定义的规则验证器,它会检查用户是否输入了正确的验证码。 3. 控制...

    如何修改yii2.0自带的user表为其它的表

    下面,我们将详细介绍如何将Yii2.0自带的user表替换为其他的表,比如我们自定义的admin表。 首先,需要明确的是,修改用户表涉及的主要是模型和配置文件的调整。在Yii2.0中,身份验证是通过身份类(identity class...

    yii2利用自带UploadedFile实现上传图片的示例

    总结以上步骤,利用Yii2自带的UploadedFile类实现图片上传,主要分为以下几个步骤: 1. 创建一个模型类,定义上传文件的属性及验证规则。 2. 创建一个视图文件,用于提供上传界面。 3. 在控制器中编写上传处理逻辑...

    在Mac OS上搭建PHP的Yii框架及相关测试环境

    Yii是一款高效的、基于组件的PHP框架,它支持快速开发、可伸缩性,并且提供了丰富的功能,如MVC(模型-视图-控制器)、DAO/ODM(数据访问对象/对象数据映射)、缓存、身份验证和权限控制等。 首先,Mac OS系统自带...

    php写app用的框架整理

    Yii支持纯面向对象编程(OOP)开发,让模型的使用变得非常方便。该框架支持命令行工具,这意味着开发者可以快速创建Web应用程序的代码。Yii的另一个优势是其高度的可重用性和可扩展性,开发者可以编写可复用的代码,...

    php7-mvc-framework:PHP 7 MVC框架项目

    在实际项目中,开发者可以根据需求选择现有的成熟框架,如Laravel、Symfony或Yii等,也可以自定义构建符合项目特性的轻量级框架。无论哪种方式,理解PHP 7的新特性以及MVC模式的核心原理都是至关重要的。

Global site tag (gtag.js) - Google Analytics