// 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.');
}
分享到:
相关推荐
8. **Gii代码生成工具**:Gii 是Yii自带的代码生成工具,能自动生成模型、控制器、表单和CRUD操作,大大提高了开发效率。 9. **Web服务**:Yii 支持RESTful API开发,便于构建面向服务的架构。 10. **错误和日志...
9. **Gii工具**:Yii自带了一个代码生成工具Gii,可以帮助快速生成模型、控制器和视图,提高开发效率。 10. **Ajax支持**:Yii提供了丰富的Ajax支持,如AJAX验证和更新内容。 对于希望深入理解Yii框架的中高级PHP...
4. 使用Gii工具:Yii自带了一个代码生成工具Gii,可以自动生成模型、控制器、CRUD操作等基础代码,加快开发速度。 五、性能优化 Yii 1.1.17提供了一些性能优化手段,例如: 1. 使用缓存:合理使用缓存可以极大地...
7. **Gii代码生成工具**:Gii是Yii自带的代码生成工具,能自动生成模型、控制器、CRUD操作等,大大加快开发速度。在1.1.8中,Gii的模板和性能都有所提升。 8. **AJAX支持**:Yii提供了方便的AJAX支持,包括AJAX验证...
Yii 自带了Gii代码生成工具,可以自动生成模型、控制器、表单以及CRUD(创建、读取、更新、删除)操作,极大地提高了开发效率。 9. 综合文档: yii-docs-1.1.7.r3135 包含了完整的框架文档,涵盖了所有类、方法和...
10. **前端框架**:虽然 Yii 自带了一些前端支持,但现代项目可能还会结合使用 Vue.js, React 或 Angular 等前端框架,以实现更复杂的交互效果和优化用户体验。 在 citydemo 文件中,包含了实现这个功能的代码和...
2. **Yii自带的Widget**: - CActiveForm是Yii提供的表单组件,它支持客户端验证(客户端验证可以在用户提交前进行,提高用户体验)和服务器端验证。 - 如`CActiveForm::beginWidget()`用于开始一个表单,通过`...
Yii 提供了便捷的表单处理功能,可以自动绑定模型属性,进行数据验证,并处理上传文件。同时,它还支持 AJAX 表单提交,增强用户体验。 九、URL 管理 Yii 的 URL 管理模块允许你创建友好的、SEO 友好的 URL 结构,...
9. 命令行工具:Gii是Yii2自带的代码生成工具,可以快速生成模型、控制器、CRUD(增删改查)操作等基础代码,减少了重复劳动。 10. 国际化和本地化:Yii2支持多语言,内置I18N(国际化)和L10N(本地化)功能,方便...
如果模型验证通过,并且文件上传成功,我们就会将文件保存到服务器指定的目录。在文件保存过程中,我们使用了date函数来生成文件名,并且在保存之前检查目标目录是否存在,如果不存在则创建它。最后,将上传成功的...
Yii2.0自带了Gii代码生成工具,可以自动生成模型、控制器、视图等代码,加快开发速度。同时,Debug Toolbar提供了详细的性能分析和错误追踪信息,帮助开发者优化代码。 综上所述,"最新Yii2.0手册"是深入理解和使用...
7. **Gii 代码生成工具**:Gii 是 Yii 自带的一个代码生成器,可以自动生成控制器、模型、视图等,加速开发过程。 8. **Ajax 支持**:Yii 提供了与 jQuery 集成的组件,便于创建 Ajax 富交互应用。 9. **强大的表单...
2. 验证码的规则验证:在模型的规则验证方法中,加入对验证码的验证规则,通常使用 Yii 提供的 'captcha' 规则验证器。这里的 'captcha' 是一个预定义的规则验证器,它会检查用户是否输入了正确的验证码。 3. 控制...
下面,我们将详细介绍如何将Yii2.0自带的user表替换为其他的表,比如我们自定义的admin表。 首先,需要明确的是,修改用户表涉及的主要是模型和配置文件的调整。在Yii2.0中,身份验证是通过身份类(identity class...
总结以上步骤,利用Yii2自带的UploadedFile类实现图片上传,主要分为以下几个步骤: 1. 创建一个模型类,定义上传文件的属性及验证规则。 2. 创建一个视图文件,用于提供上传界面。 3. 在控制器中编写上传处理逻辑...
Yii是一款高效的、基于组件的PHP框架,它支持快速开发、可伸缩性,并且提供了丰富的功能,如MVC(模型-视图-控制器)、DAO/ODM(数据访问对象/对象数据映射)、缓存、身份验证和权限控制等。 首先,Mac OS系统自带...
Yii支持纯面向对象编程(OOP)开发,让模型的使用变得非常方便。该框架支持命令行工具,这意味着开发者可以快速创建Web应用程序的代码。Yii的另一个优势是其高度的可重用性和可扩展性,开发者可以编写可复用的代码,...
在实际项目中,开发者可以根据需求选择现有的成熟框架,如Laravel、Symfony或Yii等,也可以自定义构建符合项目特性的轻量级框架。无论哪种方式,理解PHP 7的新特性以及MVC模式的核心原理都是至关重要的。