ThinkPHP中的三大自动简介
author:一佰互联 2019-04-28   click:178

本文较为详细的讲述了ThinkPHP中的三大自动,是非常重要的应用,分享给大家供大家参考。具体如下:

一、自动验证

格式如下:

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

参数说明:

验证字段:需要验证表单字段名称
验证规则:必须要结合附加规则一起使用
错误提示:如果出现错误,抛出一个什么样的错误提示告知用户
验证条件: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/Tpl/default/User/reg.html页面如下:

<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","重复密码必填"),
     array("password","repassword","两次密码不一致",0,"confirm"),
     array("createtime","number","您输入的不是数字"),
     array("createip","email","邮箱格式不正确"),
  ); 
  function checklen($data){
    if(strlen($data)>15 || strlen($data)<5){
      return false;
    }else{
      return true;
    }
  }
     
 }
?>

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

<?php
 class UserAction extends Action {
 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());
   } 
 } 
}
?>
 

二、自动完成(自动填充)

自动完成也是ThinkPHP当中的一个成员方法,在create的时候,自动执行

规则如下:

array("填充字段","填充内容","填充条件","附加规则");

简单示例如下:

protected $_auto = array ( 
   //array( "status","1"),  // 新增的时候把 status 字段设置为 1
   array("password","md5",1,"function") , // 对 password 字段在新增的时候使 md5 函数处理
   array("createtime","time",3,"function" ), // 对 create_time 字段在更新的时候写入当前时间戳
); 

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

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

简单示例如下:

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

详细本文所述技巧对于大家学习及使用ThinkPHP有一定的帮助作用。