ThinkPHP中的三大自动简介,ThinkPHP三大自动
分类:多线程

本文较为详细的陈诉了ThinkPHP中的三大活动,是丰硕首要的行使,分享给大家供大家参考。具体如下:

一、自动验证

在服务器端通过tp框架完成表单验证

一、自动验证

   array('验证字段','验证法规','错误提醒','验证条件','附加准绳','验证时间'卡塔尔

用户名、密码、重复密码、邮箱、qq、手提式有线电话机号码、爱好、文凭

格式如下:

  
   //验证字段:要求验证表单字段名称
   //验证法则:必必要整合附加准绳一同行使
   //错误提示:要是出现谬误,抛出八个什么样的大错特错提醒告知客户
   //验证条件:0、1、2
   //附加法规:1、regex使用正则验证 2、function使用函数验证 3、callback回调 4、confirm验证表单当中五个字段是不是相像5、验证是还是不是等于某些值 6、in是或不是在某叁个范围内 7、验证是不是独一
   //TP封装:require 字段必需表达;eamil 验证邮箱;url 验证url地址;currency 货币;number 数字;
   //验证时间:指数据库操作时间的注脚机遇,新添多少时证实Model::MODEL_INSERT;编辑的时候证实Model::MODEL_UPDATE;全部意况下验证Model::MODEL_BOTH;

具体步骤:

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

   aoli/Home/Tpl/default/User/reg.html

  1. 创建表单
  2. 表单form数据经过create(卡塔尔(قطر‎方法采撷(验证作用要求我们必须要经过create(卡塔尔国方法收集数据卡塔尔
  3. 自定义数据model模型类达成具体表明准则

参数表明:

  <form action="__URL__/regadd" method="post">
    用户名:<input type="text" name="username" /><br />
    密码:<input type="password" name="password" /><br />
    重复密码:<input type="password" name="repassword" /><br />
    注册时间:<input type="text" name="createtime" /><br />
    注册IP:<input type="text" name="createip" /><br />
    <input type="submit" value="注册" />
  </form>
  
   aoli/Home/Lib/Model/UserModel.class.php
  
  <?php
  class UserModel extends Model{//对应数据库中的表user
      protected $_validate=array(
          array('username','require','客商名必填'卡塔尔(قطر‎,
          array('username','checklen','客商名长渡过长或过短',0,'callback'卡塔尔国,
          array('password','require','密码必填'卡塔尔(قطر‎,
          array('repassword','require','重复密码必填'State of Qatar,
          array('password','repassword','五次密码差异',0,'confirm'State of Qatar,
          array('createtime','number','您输入的不是数字'卡塔尔,
          array('createip','email','邮箱格式不得法'卡塔尔(قطر‎,
      );  
      function checklen($data){
          if(strlen($data)>15 || strlen($data)<5){
              return false;
          }else{
              return true;
          }
      }
         
  }
  ?>

活动验证是ThinkPHP模型层提供的一种多少证实办法,可以在利用create创建数量对象的时候自动进行多少说明。

证实字段:需求验证表单字段名称
阐明规则:必供给结成附加准则一齐利用
荒诞提醒:要是现身谬误,抛出三个怎么着的谬误提示告知顾客
表达条件:0、1、2
外加准则:1、regex使用正则验证 2、function使用函数验证 3、callback回调 4、confirm验证表单当中两个字段是或不是一律 5、验证是不是等于某些值 6、in是还是不是在某三个限量内 7、验证是还是不是独一
TP封装:require 字段必得评释;eamil 验证邮箱;url 验证url地址;currency 货币;number 数字;
申明时间:指数据库操作时间的证实机会,新扩展多少时表明Model::MODEL_INSERT;编辑的时候证实Model::MODEL_UPDATE;全部情况下验证Model::MODEL_BOTH;

   aoli/Home/Lib/Action/UserAction.class.php

多少印证能够展开数据类型、业务法规、安全剖断等地点的印证操作。

aoli/Home/Tpl/default/User/reg.html页面如下:

       <?php
       class UserAction extends Action {     

数量阐明有二种方法:

用户名:
密码:
再一次密码:
挂号时间:
注册IP:

       function reg(){
           $this->display();     
       }
      
       function regadd(){
           $user=D('user');
           if($user->create()){
               if($user->add()){
                   $this->success('注册成功'卡塔尔;     
               }else{
                   $this->error('注册战败'卡塔尔;     
               }
           }else{
               $this->error($user->getError());     
           }      
       }      
  }
  ?>
  
二、自动完结(自动填写)

  1. 静态情势:在模型类里面通过$_validate属性定义表明准则。
  2. 动态方式:使用模型类的validate方法动态创设自动验证法则。

aoli/Home/Lib/Model/UserModel.class.php页面如下:

    //自动完毕也是ThinkPHP个中的三个分子方法,在create的时候,自动试行
    //array('填充字段','填充内容','填充条件','附加准则'卡塔尔(قطر‎;
    protected $_auto = array ( 
      //array( 'status','1'State of Qatar,   //  新扩大的时候把 status 字段设置为 1
      array('password','md5',1,'function'卡塔尔国 ,  //  对 password 字段在增加生产总量的时候使 md5 函数管理
      array('createtime','time',3,'function' ),  //  对 create_time 字段在立异的时候写入当前岁月戳
    );

无论怎样点子,验证准绳的定义是联合的法则,定义格式为:

15 || strlen($data)<5){
      return false;
    }else{
      return true;
    }
  }

 }
?>

二、自动映射(字段映射)

图片 1

aoli/Home/Lib/Action/UserAction.class.php页面如下:

    //自动映射:将数据库的字段映射成小名,在表单中就足以使用别称了。
    protected $_map = array(   
        'name' => 'username',
        'pass' => 'password',
    );

 

display();
 }
 function regadd(){
   $user=D('user');
   if($user->create()){
     if($user->add()){
       $this->success('注册成功');
     }else{
       $this->error('注册失败');
     }
   }else{
     $this->error($user->getError());
   } 
 } 
}
?>

说明

二、自动达成(自动填写)

验证字段 (必需)

亟需验证的表单字段名称,那么些字段不断定是数据库字段,也足以是表单的局地扶助字段,举个例子确认密码和验证码之类。某些验证法则和字段毫无干系的情事下,验证字段是能够无节制安装的,比方expire保藏期法则是和表单字段毫无干系的。假设定义了字段映射的话,这里的注解字段名称应当是实际的数量表字段并不是表单字段。

机关达成也是ThinkPHP在那之中的二个成员方法,在create的时候,自动实行

证实法规 (必须)

要拓展求证的法规,需求结合附加准绳,固然在接收正则验证的叠合准绳情状下,系统还内置了一部分常用正则验证的准则,能够平素作为验证法则使用,包涵:require 字段必得、email 邮箱、url U揽胜极光L地址、currency 货币、number 数字。

准则如下:

唤醒音讯 (必得)

用于注解失利后的提醒音讯定义

array('填充字段','填充内容','填充条件','附加规则');
表明条件 (可选)

富含上面三种状态:

  • self::EXISTS_VALIDATE 大概0 存在字段就证实(暗中同意)
  • self::MUST_VALIDATE 大概1 必须注脚
  • self::VALUE_VALIDATE大概2 值不为空的时候证实

简易示举个例子下:

外加准则 (可选)

合作验证准绳使用,满含下边一些中规中矩: 

图片 2

图片 3

 

protected $_auto = array ( 
   //array( 'status','1'),  // 新增的时候把 status 字段设置为 1
   array('password','md5',1,'function') , // 对 password 字段在新增的时候使 md5 函数处理
   array('createtime','time',3,'function' ), // 对 create_time 字段在更新的时候写入当前时间戳
); 
证实时间(可选)
  • self::MODEL_INSERT可能1新添数据时候证实
  • self::MODEL_UPDATE也许2编辑数额时候证实
  • self::MODEL_BOTH或然3全方位处境下验证(暗中同意)

这里的印证时间必要静心,并非独有这两种处境,你能够依据业务须要追加此外的辨证时间。

二、自动映射(字段映射)

静态定义:

在模型类里面预先定义好该模型的自行验证准则,我们称为静态定义。

自行映射:将数据库的字段映射成别名,在表单中就可以利用小名了。

Home/Controller/ZhuCeController.class.php:

图片 4图片 5

 1 <?php
 2 namespace HomeController;
 3 use ThinkController;
 4 class ZhuCeController extends Controller
 5 {
 6     
 7     function ZhuCe()
 8     {
 9         $cw="";
10         if(!empty($_GET))
11         {
12             $cw=$_GET["cw"];    
13         }
14         if(empty($_POST))
15         {
16             $this->assign("error",$cw);
17             $this->display();
18         }
19         else
20         {            
21             $model=newHomeModelTextModel();
22             //$model=D("Text");
23             if(!$model->create())//有返回值
24             {
25                 $e=$model->getError();
26                 $url="ZhuCe/cw/{$e}";
27                 $this->error("注册失败!",$url,1);
28             }
29             else
30             {
31                 $model->add();    
32     
33             }
34 
35         }        
36         
37     }
38 }

View Code

由此可以知道示比方下:

Model/TextModel.class.php:

图片 6图片 7

 1 <?php
 2 namespace HomeModel;
 3 use ThinkModel;
 4 class TextModel extends Model
 5 {    
 6     protected $_validate=array(
 7     array('uid','require','用户名不能为空!'),
 8     array('pwd','require','密码不能为空!'),
 9     array('pwd','pwd1','两次输入的密码不一致!',1,'confirm'),
10     array('age','18,50','年龄必须在18-50岁之间!',1,'between'),
11     array('email','email','邮箱格式不正确!'),
12     array('email','','邮箱已被注册!',1,'unique'),//unique可以验证非主键字段
13     ); 
14 }

View Code

protected $_map = array(  
  'name' => 'username',
  'pass' => 'password',
); 

View/Zhuce/ZhuCe.html:

图片 8图片 9

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>表单验证</title>
 6 </head>
 7 
 8 <body>
 9 <form action="__ACTION__" method="post">
10 <div>用户名:<input type="text" name="uid" /></div><br />
11 <div>密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="text" name="pwd" /></div>
12 <div>确认密码:<input type="text" name="pwd1" /></div><br />
13 <div>年龄:<input type="text" name="age" /></div><br />
14 <div>邮箱:<input type="text" name="email" /></div><br />
15 <div>姓名:<input type="text" name="name" /></div><br />
16 <!--显示错误信息 -->
17 <div style=" width:200px; height:30px; border:#F00 solid 2px; line-height:30px; vertical-align:middle; text-align:center;"><{$error}></div><br />
18 <div><input type="submit" value="注册" /></div>
19 </form>
20 </body>
21 </html>

View Code

 

详见本文所述技艺对于大家学习及利用ThinkPHP有确定的声援意义。

运营结果:

结果1:

图片 10   

==>    图片 11

 

结果2:

图片 12           ==>      图片 13

 

在扩充机动验证的时候,系统会对定义好的表明法则举行逐一验证。假使某一条表达准绳未有通过,则会报错,getError方法再次回到的错误音信(字符串)正是对应字段的印证法则里面包车型客车错误提醒音信。

图片 14

 

 

动态验证:

若是采用动态验证的点子,就相比较灵活,可以依赖分裂的急需,在操作同多少个模型的时候使用差别的表达法规

Home/Controller/ZhuCeController.class.php:

图片 15图片 16

 1 <?php
 2 namespace HomeController;
 3 use ThinkController;
 4 class ZhuCeController extends Controller
 5 {
 6     
 7     function ZhuCe()
 8     {
 9         $cw="";
10         if(!empty($_GET))
11         {
12             $cw=$_GET["cw"];    
13         }
14         if(empty($_POST))
15         {
16             $this->assign("error",$cw);
17             $this->display();
18         }
19         else
20         {            
21             //动态验证:
22             $model=new HomeModelTestModel();
23             $rules=array(
24                 array('uid','require','用户名不能为空!'),
25                 array('pwd','require','密码不能为空!'),
26                 array('pwd','pwd1','两次输入的密码不一致!',1,'confirm'),
27                 array('age','18,50','年龄必须在18-50岁之间!',1,'between'),
28                 array('email','email','邮箱格式不正确!'),
29                 array('email','','邮箱已被注册!',1,'unique'),//unique可以验证非主键字段
30             );
31             
32             if(!$model->validate($rules)->create())
33             {
34                 echo $model->getError();
35             }
36             else
37             {
38                 $model->add();    
39     
40             }
41         }        
42         
43     }
44 }

View Code

Model/TextModel.class.php:(空模型)

图片 17图片 18

1 <?php
2 namespace HomeModel;
3 use ThinkModel;
4 class TextModel extends Model
5 {    
6     
7 }

View Code

View/Zhuce/ZhuCe.html:(同静态验证卡塔尔

图片 19图片 20

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>表单验证</title>
 6 </head>
 7 
 8 <body>
 9 <form action="__ACTION__" method="post">
10 <div>用户名:<input type="text" name="uid" /></div><br />
11 <div>密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="text" name="pwd" /></div>
12 <div>确认密码:<input type="text" name="pwd1" /></div><br />
13 <div>年龄:<input type="text" name="age" /></div><br />
14 <div>邮箱:<input type="text" name="email" /></div><br />
15 <div>姓名:<input type="text" name="name" /></div><br />
16 <!--显示错误信息 -->
17 <div style=" width:200px; height:30px; border:#F00 solid 2px; line-height:30px; vertical-align:middle; text-align:center;"><{$error}></div><br />
18 <div><input type="submit" value="注册" /></div>
19 </form>
20 </body>
21 </html>

View Code

图片 21

 

本文由10bet手机官网发布于多线程,转载请注明出处:ThinkPHP中的三大自动简介,ThinkPHP三大自动

上一篇:php中的字符编码转换函数用法示例 下一篇:没有了
猜你喜欢
热门排行
精彩图文