PHP Yii框架之表单验证规则大全


Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用 。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程 。

废话不多说了,直接给大家贴代码了 。

<?php
class ContactForm extends CFormModel
{
  public $_id;
  public $contact;//联系人
  public $tel;//电话
  public $fax;//传真
  public $zipcode;//邮编
  public $addr;//地址
  public $mobile;//手机
  public $email;//邮箱
  public $website;//网址
  public $qq;//QQ
  public $msn;//MSN
  public function rules()
  {
    return array(
      array(contact,required,on=>edit,message=>联系人必须填写.),
      array(contact,length,on=>edit,min=>2,max=>10,tooShort=>联系人长度请控制在2-10个字符.,tooLong=>联系人长度请控制在2-10个字符.),
      array(tel, match,pattern => /^(\d{3}-|\d{4}-)(\d{8}|\d{7})?$/,message => 请输入正确的电话号码.),
      array(fax, match,pattern => /^(\d{3}-|\d{4}-)(\d{8}|\d{7})?$/,message => 请输入正确的传真号码.),
      array(mobile, match,pattern => /^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/,message => 请输入正确的手机号码.),
      array(email,email,on=>edit,message=>邮箱输入有误.),
      array(zipcode,required,on=>edit,message=>邮编必须填写.),
      array(zipcode,numerical,on=>edit,message=>邮编是6位数字.),
      array(zipcode,length,on=>edit,min=>6,max=>6,tooShort=>邮编长度为6位数.,tooLong=>邮编长度为6位数.),
      array(website,url,on=>edit,message=>网址输入有误.),
      array(qq, match,pattern => /^[1-9]{1}[0-9]{4,11}$/,message => 请输入正确的QQ号码.),
      array(msn,email,on=>edit,message=>MSN输入有误.),
    );
  }
}

完整示例:

public $password2;//非数据库的字段,但是在view中需要用到
  public $verify; //手机验证码
  public $fjg; //忘记号码
  /**
   * 映射数据库表名
   * @return string the associated database table name<br><br>     * www.shouce.ren
   */
  public function tableName()
  {
    return adm_user;
  }
  /**
   * 验证规则
   * @return array validation rules for model attributes.
   */
  public function rules()
  {
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
      //array(mobile_phone,name,status, required),
      array(mobile_phone, unique),//message => 该手机号已经存在!
      array(mobile_phone, match,pattern => /^(13|15|18)[0-9]{9}$/,message => 请输入正确的经办人手机号码.),
      //array(certificate_id, match,pattern => /(.jpg|.gif|.png|\d)$/,message => 请重新选择证书图像并且后缀只能是jpg、gif、png格式.),
      array(phone, match,pattern => /^(\d{3}-|\d{4}-)?(\d{8}|\d{7})?$/,message => 请输入正确的座机号码.),
      array(fax, match,pattern => /^(\d{3}-|\d{4}-)(\d{8}|\d{7})?$/,message => 请输入正确的传真号码.),
      //array(email_address, match,pattern => /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,message => 请输入正确的邮箱.),
      array(email_address,email,message=>请输入正确的邮箱.),
      //验证密码和确认密码
      array("password2","compare","compareAttribute"=>"password","message"=>"两次密码不一致",on=>register),
      array("password2","compare","compareAttribute"=>"password","message"=>"两次密码不一致",on=>regonter),
      array(qq, match,pattern => /^[1-9]{1}[0-9]{4,11}$/,message => 请输入正确的QQ号码.),
      array(type,certificate_id,company_type, nationality,yyzz_id, status,level,create_by_id, create_time,update_time, numerical, integerOnly=>true),
      array(verify, numerical, message => 验证码不正确,integerOnly=>true),
      array(name,user_type,tuijianren, length, max=>20),
      array(password, length, max=>100),
      array(email_address,business, length, max=>50),
      array(communication_address,money, yhzh,yhmc,industry, company, register_address,yhdh,shangbiao,zhuanli,gongshang, length, max=>255),
      array(role_id,default, setOnEmpty=>true, value=>10),
      array(shangbiao,default, setOnEmpty=>true, value=>0,0),
      array(zhuanli,default, setOnEmpty=>true, value=>0,0),
      array(gongshang,default, setOnEmpty=>true, value=>0,0),
      array(password,default, setOnEmpty=>true, value=>123456),
      /*验证码*/
      array(verify,checkVerify, on=>register),
      array(email_address,checkemail, on=>regonter),
//     array(certificate_id, file,allowEmpty=>true,
//         types=>jpg, gif, png, doc, txt,
//         maxSize=>1024 * 1024 * 10, // 10MB
//         tooLarge=>文件大小不能超过10M!,
//         message=>请先上传证书图像.
//     ),
      // The following rule is used by search().
      // @todo Please remove those attributes that should not be searched.
      array(id,role_id,name, password,user_type, email_address,tuijianren,shangbiao,company_type,zhuanli,gongshang,money,yhzh,yhmc,yyzz_id,yhdh,type,level, phone, qq, mobile_phone, fax, communication_address, nationality, industry, company, business, register_address, certificate, status, create_by_id, create_time, update_time, safe, on=>search),
    );
  } 
  /*
   * 手机验证码校验 
   */
  public function checkVerify($attribute,$params)
  {   
    $model=new Mess();
    $d_title = $model->find(array(condition=>suij=:suij and tel=:tel and type>:type and time>:time,params=>array(:suij=>$this->verify,:tel=>$this->mobile_phone,:type=>0,:time=>(time()-3600)),select=>array(id)));
    //$d_title = $model->findByAttributes(array(suij=>$this->verify,tel=>$this->mobile_phone),array(select=>array(id)));
    if($d_title[id]<1)
    {
      $this->addError(verify, "验证码不正确 。");
    }
    else
    {
      if($this->password == $this->password2)
      {
        $model->updateAll(array(type=>0),array(condition=>suij=:sj,params=>array(:sj=>$this->verify)));
      }
    }
  }

以上代码就是关于PHP Yii框架之表单验证规则大全的全部内容,希望大家喜欢 。