thinkphp 自动验证学习
admin
2023-06-15 10:02:35
0


@ php 学习 thinkphp 验证

1,在thinkphp 中可以对create创建的数据对象进行验证 ,一般有两种验证方式: 静态验证,动态验证


   1.1,静态验证: 在模型类里面通过$_validate属性定义验证规则

     (1)验证格式:

        

     array(     
                array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
          )

          1,验证字段: 为数据表里的字段,同时也可以其他表单辅助字段,并且可以自定义并将自定义的字段映射到数据表的字段名

            如: 

            

       Class UserModel extends Model
            {
               protected $_map = array(
                      'name' =>'username', // 把表单中name映射到数据表的username字段
                      'mail'  =>'email', // 把表单中的mail映射到数据表的email字段
               );
            }

          2,验证规则: 系统还内置了一些常用正则验证的规则 有require (字段必填),email(邮箱格式),

                              url(url格式),currency(货币),number (正整数)   ,integer(整数),double(浮点

                              数),zip(邮政编码),english(英文),并且这些规则默认附加规则是regex, 还有正

                              则表达式验证规则,但需要自定义设定好

          3,错误提示: 自定义

          4,验证条件:

              包含下面几种情况:

self::EXISTS_VALIDATE 或者0 存在字段就验证(默认) 

self::MUST_VALIDATE 或者1 必须验证 

self::VALUE_VALIDATE或者2 值不为空的时候验证 

          5,附加条件: 参考手册 ,其中function  和callback 两种附加条件

              

              5.1 callback 附加规则 ,其定义的验证规则为callback 方法的名字,附加规则为callback


              如下例:

              array(验证字段1,checkLength,错误提示,[验证条件,callback,验证时间,callback函数的参数]),其中checkLength中的$min ,$max 的实参可以定义为 array(3,5)。为$min 传的值为3,$max传的值为5

                protected function checkLength ($str,$min,$max) 
                  {
	                 preg_match_all("/./u",$str,$matches);
	                 $len = count($matches[0]);
	                 if($len<$min || $len>$max){
	                     return false;
	                 }else{
	                   return true;
	                 }
                  }

               5.1 function 附加规则是相对与callback附加规则一样,只是将定义的规则方法,放在    

                     Common 文件下Conmon文件夹建立function.php文件,后会自定调用此规则。     


           6,验证时间:

                           self::MODEL_INSERT或者1新增数据时候验证 

   self::MODEL_UPDATE或者2编辑数据时候验证 

   self::MODEL_BOTH或者3全部情况下验证(默认) 

          7 ,多字段验证:

   在UserModel类中增加 :protected $patchValidate = true;


   (2)静态验证完整格式

     

         public  UserModel extends Model 
        {
	     protected $_validate = array(   
	       array('verify','require','验证码必须!'), //默认情况下用正则进行验证    
               array('name','','帐号名称已经存在!',0,'unique',1), // 在新增的时候验证name字段是否唯一 
               array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式   );
         }

     根据model定义好验证规则后,就可以在使用create方法创建数据对象的时候自动调用

    

            public UserController extends Controller
           {
     	       public function add ()
     	      {    //判断是由post 上传的数据
	           if(IS_POST){
	              if (!$User->create()){   
	                // 如果创建失败 表示验证没有通过 输出错误提示信息    
	                 exit($User->getError());
	                }else{   
	                  // 验证通过 可以进行其他数据操作
	                }
	           }
     	       }
	
          }

   1.2,动态验证: 使用模型类的validate方法动态创建自动验证规则

       在UserController 类的方法中定义

         $rules = array(    
                        array('verify','require','验证码必须!'), //默认情况下用正则进行验证
                 );
         $User = M("User"); // 实例化User对象
         if (!$User->validate($rules)->create())
         {     
         // 如果创建失败 表示验证没有通过 输出错误提示信息   
           exit($User->getError());
           }else{ 
               // 验证通过 可以进行其他数据操作
                }


   


相关内容

热门资讯

伊朗伊斯兰革命卫队:过去24小... △霍尔木兹海峡(资料图)当地时间26日晚间,伊朗伊斯兰革命卫队海军公共关系部发布消息称,过去24小时...
AI公司烧不起Token了!国... 新智元报道 【新智元导读】4个月烧光全年AI预算,天价Token账单正在屠杀硅谷!今天,高性能Ag...
消息称AMD苏姿丰布局Zen ... 来源:市场资讯 (来源:IT之家) IT之家 5 月 26 日消息,工商时报昨日(5 月 25 日)...
伊朗总统:毫不动摇捍卫领土与国... 当地时间5月26日,伊朗总统佩泽希齐扬发表讲话时表示,伊朗向伊斯兰国家伸出了“兄弟般的友谊之手”。与...
气象科普课堂搬进学校,高要首个... 近日,高要区气象局与高要区第一中学完成校园气象站共建并开展首场气象科普培训,将气象科普课堂搬进学校,...
2026年济南科技活动周正式启... 5月26日上午,2026年济南科技活动周启动仪式暨全国科技工作者日(槐荫)主场活动在山东科技会堂隆重...
凤凰晚报丨投毒杀人者、 三体公... 今日人物【风暴眼丨中国版“绝命毒师”伏法!揭秘三体原CEO许垚投毒轨迹】“三体公司”原CEO许垚,被...
大润发创始人尹衍樑逝世,享年7... 5月26日,润泰集团证实,润泰集团总裁、唐奖创办人、大润发创始人尹衍樑,于2026年5月26日凌晨4...
全国科技工作者日 |市科协搭台... 科技创新是很多中小企业的“短板”,为帮助企业解决技术难题,5月20日,泰州市科协组织“工博士”科技服...
LLC磁集成变压器厂家梳理 新... 导语:LLC磁集成变压器作为高频变压器领域的技术分支,凭借高功率密度、低损耗等特性,成为新能源、工业...