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 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
一个SQL管理员的web接口
Oct 09 PHP
dedecms中显示数字验证码的修改方法
Mar 21 PHP
php zlib压缩和解压缩swf文件的代码
Dec 30 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
php使用ICQ网关发送手机短信
Oct 30 PHP
php中http与https跨域共享session的解决方法
Dec 20 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
php获取远程文件的内容和大小
Nov 03 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 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
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
require.js的用法详解
2015/10/20 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
js实现小时钟效果
2020/03/25 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
如何让python的运行速度得到提升
2020/07/08 Python
Python ellipsis 的用法详解
2020/11/20 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
公司部门司机岗位职责
2014/01/03 职场文书
生日庆典策划方案
2014/06/02 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
Python 实现定积分与二重定积分的操作
2021/05/26 Python
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python
python manim实现排序算法动画示例
2022/08/14 Python