首页 > 开发 > PHP > 正文

PHP YII框架开发小技巧之模型(models)中rules自定义验证规则

2024-05-04 22:34:04
字体:
来源:转载
供稿:网友

YII的models中的rules部分是一些表单的验证规则,对于表单验证十分有用,在相应的视图(views)里面添加了表单,在表单被提交之前程序都会自动先来这里面的规则里验证,只有通过对其有效的限制规则后才能被提交,可以很有效地保证表单安全和信息的有效性。还是给大家具体说明一下:

以下是视图(views)部分的简单代码:

<?php $form=$this->beginWidget('CActiveForm', array(   'id'=>'tag-form',   'enableAjaxValidation'=>false, )); ?>   <div class="row">     <?php echo $form->labelEx($model,'tagname'); ?>     <?php echo $form->textField($model,'tagname',array('size'=>20,'maxlength'=>32)); ?>   </div>   <div class="row">     <?php echo $form->labelEx($model,'tagtype'); ?>     <?php echo $form->radioButtonList($model,'tagtype'array(1=>"普通TAG",2=>"系统默认TAG"),array('separator'=>'','labelOptions'=>array('class'=>'tagtypelabel'))); ?>   </div>   <?php echo $form->errorSummary($model); ?>   <div class="row buttons">     <?php echo CHtml::submitButton($model->isNewRecord ? '添加' : '修改'); ?>   </div> <?php $this->endWidget(); ?> 

模型(models)中rules部分的简单代码:

public function rules() {   return array(     array('tagname,tagtype', 'required'),     array('tagtype', 'numerical', 'integerOnly'=>true),     array('tagname', 'length', 'max'=>32),     array('tagname', 'match', 'pattern'=>'/^[/x{4e00}-/x{9fa5}A-Za-z0-9]+$/u',         'message'=>'标签不合法,必须为汉字、字母或者数字!'),     array('tagname', 'checktagname', 'on'=>'create,update'),//插入TAG时检查是否已经存在该tag     array('tagid, tagname, tagtype', 'safe', 'on'=>'search'),   ); } 

系统默认有这些验证规则:

boolean : CBooleanValidator 的别名, 确保属性的值是CBooleanValidator::trueValue 或 CBooleanValidator::falseValue . 
captcha : CCaptchaValidator 的别名,确保了特性的值等于 CAPTCHA 显示出来的验证码. 
compare : CCompareValidator 的别名, 确保了特性的值等于另一个特性或常量. 
email : CEmailValidator 的别名,确保了特性的值是一个有效的电邮地址. 
default : CDefaultValueValidator 的别名, 为特性指派了一个默认值. 
exist : CExistValidator 的别名, 确保属性值存在于指定的数据表字段中. 
file : CFileValidator 的别名, 确保了特性包含了一个上传文件的名称. 
filter : CFilterValidator 的别名, 使用一个filter转换属性. 
in : CRangeValidator 的别名, 确保了特性出现在一个预订的值列表里. 
length : CStringValidator 的别名, 确保了特性的长度在指定的范围内. 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表