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


Posted in PHP onNovember 16, 2015

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框架之表单验证规则大全的全部内容,希望大家喜欢。

PHP 相关文章推荐
攻克CakePHP系列一 连接MySQL数据库
Oct 22 PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 PHP
php对称加密算法示例
May 07 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
php技巧小结【推荐】
Jan 19 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
Jul 21 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 #PHP
yii添删改查实例
Nov 16 #PHP
PHP的运行机制与原理(底层)
Nov 16 #PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 #PHP
php经典算法集锦
Nov 14 #PHP
PHP常用的小程序代码段
Nov 14 #PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 #PHP
You might like
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
yepnope.js使用详解及示例分享
2014/06/23 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
Python中的rjust()方法使用详解
2015/05/19 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
python正则表达式的使用
2017/06/12 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
python用match()函数爬数据方法详解
2019/07/23 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
学生个人的自我评价分享
2013/11/05 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
竞选班委演讲稿
2014/04/28 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
教师工作失职检讨书
2014/09/18 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript