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 相关文章推荐
桌面中心(三)修改数据库
Oct 09 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
PHP设计模式 注册表模式
Feb 05 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
async和DOM Script文件加载比较
Jul 20 PHP
IIS下PHP的三种配置方式对比
Nov 20 PHP
php的mssql数据库连接类实例
Nov 28 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
PHP生成word文档的三种实现方式
Nov 14 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
PHP getNamespaces()函数讲解
Feb 03 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 Smarty date_format [格式化时间日期]
2010/03/15 PHP
php微信公众平台开发类实例
2015/04/01 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
2019/11/13 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python生成随机数组的方法小结
2017/04/15 Python
机器学习10大经典算法详解
2017/12/07 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
python实现简单俄罗斯方块
2020/03/13 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
存储过程的优缺点是什么
2015/01/10 面试题
Windows和Linux动态库应用异同
2016/04/17 面试题
会展中心部门工作职责
2013/11/27 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
Java集成swagger文档组件
2021/06/28 Java/Android
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
redis复制有可能碰到的问题汇总
2022/04/03 Redis