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 相关文章推荐
PHP安装攻略:常见问题解答(二)
Oct 09 PHP
MySQL中create table语句的基本语法是
Jan 15 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
一个PHP的String类代码
Apr 20 PHP
简单的PHP留言本实例代码
May 09 PHP
深入php常用函数的使用汇总
Jun 08 PHP
PHP防范SQL注入的具体方法详解(测试通过)
May 09 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
php数组指针函数功能及用法示例
Feb 11 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
JS获取时间的方法
2015/01/21 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
python在windows下实现备份程序实例
2014/07/04 Python
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
python3中zip()函数使用详解
2018/06/29 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
python中rc1什么意思
2020/06/19 Python
python 如何引入协程和原理分析
2020/11/30 Python
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
搞笑老公保证书
2015/02/26 职场文书
学籍证明模板
2015/06/18 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记