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
require(),include(),require_once()和include_once()的异同
Jan 02 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
php str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 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
基于Zookeeper的使用详解
2013/05/02 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
js中parseInt函数浅谈
2013/07/31 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python实现简单多线程任务队列
2016/02/27 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
python多进程读图提取特征存npy
2019/05/21 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
python 带时区的日期格式化操作
2020/10/23 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
团委书记的竞聘演讲稿
2014/04/24 职场文书
社区志愿者活动总结
2014/06/26 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
2014年除四害工作总结
2014/12/06 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis
centos7安装mysql5.7经验记录
2022/05/02 Servers