betway必威-betway必威官方网站
做最好的网站

ThinkPHP自动达成人中学央银行使函数与回调方法实

本文实例讲述了ThinkPHP自动完成中使用函数与回调方法。分享给大家供大家参考。具体方法如下:

原文:ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)

一、自动验证

ThinkPHP 自动填充格式如下:

1:自动创建数据

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

复制代码 代码如下:

//$name=$_POST['name'];
//$password=$_POST['password'];  ---这个注册页面传过来的POST值
      下面用了自动穿件create方法就可以不用这个,会行动绑定
$user =M('User');
$User->create();   //会将传过来的$_POST数据对应到数据库的字段
$user->add();   //就可以直接写入

  
   //验证字段:需要验证表单字段名称
   //验证规则:必须要结合附加规则一起使用
   //错误提示:如果出现错误,抛出一个什么样的错误提示告知用户
   //验证条件: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(填充字段,填充内容[,填充条件][,附加规则])

2:自动验证(只需要在Model类里面定义$_validate属性)

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

附加规则,可选,包括:

使用步骤(注册验证User表)

  <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;
          }
      }
         
  }
  ?>

string:字符串,表示填充内容为字符串(默认)。

一:创建User表自定义的Mode  --->HomeLibModelUserModel.class.php
<?php
//注意:code username password....都是你表单里面的name值,要对应
//表单里面字段名字定义的
class UserModel extends Model{
protected $_validate=array(
array('code','require','验证码必须填写!'),
array('code','checkCode','验证码错误!',0,'callback',1),  //使用回调函数checkCode
array('username','require','用户必须填写!'),
array('username','','用户已经存在',0,'unique',1),
array('username','/^w{6,}$/','用户名必须6个字母以上',0,'regex',1),
array('repassword','password','确认密码不正确',0,'confirm'), 
);

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

function:使用函数,表示填充的内容是一个函数返回值。

protected function checkCode($code){
if(md5($code)!=$_SESSION['code']){
return false;
}else{
return true;
}
}
}
?>

       <?php
       class UserAction extends Action {     

callback:使用方法,表示填充的内容是一个当前 Model 的方法返回值。

//控制请值对应的注册方法
<?php
class RegisterAction extends Action{
public function doReg(){

       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());     
           }      
       }      
  }
  ?>
  
二、自动完成(自动填充)

field:字段,表示填充的内容是一个其他字段的值。

$user=D('User');  //大D方法是会先去找你自定义的Mode,(使用上面创建的UserModel.class.php类)
                //如果有有自定义的用自定义的,否则用原始的  D等同M   M!=D
 
if(!$user->create()){//会自动去验证  返回一个布尔类型,成功则自动创建数据
$this->error($user->getError());//获取具体错误信息
}
$lastId=$user->add();
if($lastId){
$this->redirect('Index/index');
}else{
$this->error('用户注册失败');
}

    //自动完成也是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 字段在更新的时候写入当前时间戳
    );

ThinkPHP 自动填充使用函数function

}
}
?>

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

本文由betway必威发布于编程开发,转载请注明出处:ThinkPHP自动达成人中学央银行使函数与回调方法实

TAG标签: betway必威
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。